Skip to content

Commit b732ed4

Browse files
1 parent f46fb84 commit b732ed4

File tree

9 files changed

+936
-4
lines changed

9 files changed

+936
-4
lines changed

doxygen_cxx/search/all_c.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pydrake/pydrake.common.value.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

pydrake/pydrake.multibody.fem.html

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,164 @@
394394

395395
</dd></dl>
396396

397+
<dl class="py class">
398+
<dt class="sig sig-object py">
399+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase</span></span></dt>
400+
<dd><p>The ForceDensityFieldBase class is an abstract base class that
401+
represents a force density field affecting deformable bodies in a
402+
MultibodyPlant. The force field is described by the member function
403+
EvaluateAt() which takes as input a position in the world frame and
404+
returns the force density from the force density field at the given
405+
location, with unit [N/m³]. To create a concrete ForceDensityFieldBase
406+
class, inherit from ForceDensityField instead of directly inheriting
407+
from ForceDensityFieldBase.</p>
408+
<div class="admonition note">
409+
<p class="admonition-title">Note</p>
410+
<p>This class is templated; see <code class="xref py py-class docutils literal notranslate"><span class="pre">ForceDensityFieldBase_</span></code>
411+
for the list of instantiations.</p>
412+
</div>
413+
<dl class="py method">
414+
<dt class="sig sig-object py">
415+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase.__init__(*args,</span> <span class="pre">**kwargs)</span></span></dt>
416+
<dd></dd></dl>
417+
418+
<dl class="py method">
419+
<dt class="sig sig-object py">
420+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase.Clone(self:</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase)</span> <span class="pre">-&gt;</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase</span></span></dt>
421+
<dd></dd></dl>
422+
423+
<dl class="py method">
424+
<dt class="sig sig-object py">
425+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase.density_type(self:</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase)</span> <span class="pre">-&gt;</span> <span class="pre">pydrake.multibody.fem.ForceDensityType</span></span></dt>
426+
<dd></dd></dl>
427+
428+
<dl class="py method">
429+
<dt class="sig sig-object py">
430+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase.EvaluateAt(self:</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase,</span> <span class="pre">context:</span> <span class="pre">pydrake.systems.framework.Context,</span> <span class="pre">p_WQ:</span> <span class="pre">numpy.ndarray[numpy.float64[3,</span> <span class="pre">1]])</span> <span class="pre">-&gt;</span> <span class="pre">numpy.ndarray[numpy.float64[3,</span> <span class="pre">1]]</span></span></dt>
431+
<dd><p>Evaluates the force density [N/m³] with the given <code class="docutils literal notranslate"><span class="pre">context</span></code> of the
432+
owning MultibodyPlant and a position in world, <code class="docutils literal notranslate"><span class="pre">p_WQ</span></code>.</p>
433+
</dd></dl>
434+
435+
</dd></dl>
436+
437+
<dl class="py template">
438+
<dt class="sig sig-object py">
439+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_</span></span></dt>
440+
<dd><p>Instantiations: <code class="xref py py-class docutils literal notranslate"><span class="pre">ForceDensityFieldBase_[float]</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">ForceDensityFieldBase_[AutoDiffXd]</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">ForceDensityFieldBase_[Expression]</span></code></p>
441+
</dd></dl>
442+
443+
<dl class="py class">
444+
<dt class="sig sig-object py">
445+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_[AutoDiffXd]</span></span></dt>
446+
<dd><p>The ForceDensityFieldBase class is an abstract base class that
447+
represents a force density field affecting deformable bodies in a
448+
MultibodyPlant. The force field is described by the member function
449+
EvaluateAt() which takes as input a position in the world frame and
450+
returns the force density from the force density field at the given
451+
location, with unit [N/m³]. To create a concrete ForceDensityFieldBase
452+
class, inherit from ForceDensityField instead of directly inheriting
453+
from ForceDensityFieldBase.</p>
454+
<dl class="py method">
455+
<dt class="sig sig-object py">
456+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_[AutoDiffXd].__init__(*args,</span> <span class="pre">**kwargs)</span></span></dt>
457+
<dd></dd></dl>
458+
459+
<dl class="py method">
460+
<dt class="sig sig-object py">
461+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_[AutoDiffXd].Clone(self:</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase_[AutoDiffXd])</span> <span class="pre">-&gt;</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase_[AutoDiffXd]</span></span></dt>
462+
<dd></dd></dl>
463+
464+
<dl class="py method">
465+
<dt class="sig sig-object py">
466+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_[AutoDiffXd].density_type(self:</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase_[AutoDiffXd])</span> <span class="pre">-&gt;</span> <span class="pre">pydrake.multibody.fem.ForceDensityType</span></span></dt>
467+
<dd></dd></dl>
468+
469+
<dl class="py method">
470+
<dt class="sig sig-object py">
471+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_[AutoDiffXd].EvaluateAt(self:</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase_[AutoDiffXd],</span> <span class="pre">context:</span> <span class="pre">pydrake.systems.framework.Context_[AutoDiffXd],</span> <span class="pre">p_WQ:</span> <span class="pre">numpy.ndarray[object[3,</span> <span class="pre">1]])</span> <span class="pre">-&gt;</span> <span class="pre">numpy.ndarray[object[3,</span> <span class="pre">1]]</span></span></dt>
472+
<dd><p>Evaluates the force density [N/m³] with the given <code class="docutils literal notranslate"><span class="pre">context</span></code> of the
473+
owning MultibodyPlant and a position in world, <code class="docutils literal notranslate"><span class="pre">p_WQ</span></code>.</p>
474+
</dd></dl>
475+
476+
</dd></dl>
477+
478+
<dl class="py class">
479+
<dt class="sig sig-object py">
480+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_[Expression]</span></span></dt>
481+
<dd><p>The ForceDensityFieldBase class is an abstract base class that
482+
represents a force density field affecting deformable bodies in a
483+
MultibodyPlant. The force field is described by the member function
484+
EvaluateAt() which takes as input a position in the world frame and
485+
returns the force density from the force density field at the given
486+
location, with unit [N/m³]. To create a concrete ForceDensityFieldBase
487+
class, inherit from ForceDensityField instead of directly inheriting
488+
from ForceDensityFieldBase.</p>
489+
<dl class="py method">
490+
<dt class="sig sig-object py">
491+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_[Expression].__init__(*args,</span> <span class="pre">**kwargs)</span></span></dt>
492+
<dd></dd></dl>
493+
494+
<dl class="py method">
495+
<dt class="sig sig-object py">
496+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_[Expression].Clone(self:</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase_[Expression])</span> <span class="pre">-&gt;</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase_[Expression]</span></span></dt>
497+
<dd></dd></dl>
498+
499+
<dl class="py method">
500+
<dt class="sig sig-object py">
501+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_[Expression].density_type(self:</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase_[Expression])</span> <span class="pre">-&gt;</span> <span class="pre">pydrake.multibody.fem.ForceDensityType</span></span></dt>
502+
<dd></dd></dl>
503+
504+
<dl class="py method">
505+
<dt class="sig sig-object py">
506+
<span class="sig-name descname"><span class="pre">ForceDensityFieldBase_[Expression].EvaluateAt(self:</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase_[Expression],</span> <span class="pre">context:</span> <span class="pre">pydrake.systems.framework.Context_[Expression],</span> <span class="pre">p_WQ:</span> <span class="pre">numpy.ndarray[object[3,</span> <span class="pre">1]])</span> <span class="pre">-&gt;</span> <span class="pre">numpy.ndarray[object[3,</span> <span class="pre">1]]</span></span></dt>
507+
<dd><p>Evaluates the force density [N/m³] with the given <code class="docutils literal notranslate"><span class="pre">context</span></code> of the
508+
owning MultibodyPlant and a position in world, <code class="docutils literal notranslate"><span class="pre">p_WQ</span></code>.</p>
509+
</dd></dl>
510+
511+
</dd></dl>
512+
513+
<dl class="py class">
514+
<dt class="sig sig-object py">
515+
<span class="sig-name descname"><span class="pre">ForceDensityType</span></span></dt>
516+
<dd><p>(Advanced) Enum for the type of force density in
517+
ForceDensityFieldBase.</p>
518+
<p>Members:</p>
519+
<blockquote>
520+
<div><p>kPerCurrentVolume : ForceDensityFieldBase::EvaluateAt() returns the force per unit of</p>
521+
</div></blockquote>
522+
<p><em>current</em> (deformed) configuration volume.</p>
523+
<blockquote>
524+
<div><p>kPerReferenceVolume : ForceDensityFieldBase::EvaluateAt() returns the force per unit of</p>
525+
</div></blockquote>
526+
<p><em>reference</em> configuration volume where the reference undeformed
527+
configuration is defined by the input mesh provided by the user.</p>
528+
<dl class="py method">
529+
<dt class="sig sig-object py">
530+
<span class="sig-name descname"><span class="pre">ForceDensityType.__init__(self:</span> <span class="pre">pydrake.multibody.fem.ForceDensityType,</span> <span class="pre">value:</span> <span class="pre">int)</span> <span class="pre">-&gt;</span> <span class="pre">None</span></span></dt>
531+
<dd></dd></dl>
532+
533+
<dl class="py attribute">
534+
<dt class="sig sig-object py">
535+
<span class="sig-name descname"><span class="pre">ForceDensityType.kPerCurrentVolume</span></span></dt>
536+
<dd></dd></dl>
537+
538+
<dl class="py attribute">
539+
<dt class="sig sig-object py">
540+
<span class="sig-name descname"><span class="pre">ForceDensityType.kPerReferenceVolume</span></span></dt>
541+
<dd></dd></dl>
542+
543+
<dl class="py property">
544+
<dt class="sig sig-object py">
545+
<span class="sig-name descname"><span class="pre">ForceDensityType.name</span></span></dt>
546+
<dd></dd></dl>
547+
548+
<dl class="py property">
549+
<dt class="sig sig-object py">
550+
<span class="sig-name descname"><span class="pre">ForceDensityType.value</span></span></dt>
551+
<dd></dd></dl>
552+
553+
</dd></dl>
554+
397555
<dl class="py class">
398556
<dt class="sig sig-object py">
399557
<span class="sig-name descname"><span class="pre">MaterialModel</span></span></dt>

pydrake/pydrake.multibody.plant.html

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1350,6 +1350,25 @@
13501350
<span class="sig-name descname"><span class="pre">DeformableModel.__init__(*args,</span> <span class="pre">**kwargs)</span></span></dt>
13511351
<dd></dd></dl>
13521352

1353+
<dl class="py method">
1354+
<dt class="sig sig-object py">
1355+
<span class="sig-name descname"><span class="pre">DeformableModel.AddExternalForce(self:</span> <span class="pre">pydrake.multibody.plant.DeformableModel,</span> <span class="pre">external_force:</span> <span class="pre">pydrake.multibody.fem.ForceDensityFieldBase)</span> <span class="pre">-&gt;</span> <span class="pre">None</span></span></dt>
1356+
<dd><p>Registers an external force density field that applies external force
1357+
to all deformable bodies.</p>
1358+
<dl class="field-list simple">
1359+
<dt class="field-odd">Raises<span class="colon">:</span></dt>
1360+
<dd class="field-odd"><ul class="simple">
1361+
<li><p><strong>RuntimeError if this DeformableModel is not</strong><strong> of </strong><strong>scalar type</strong> – </p></li>
1362+
<li><p><strong>double.</strong> – </p></li>
1363+
<li><p><strong>RuntimeError if this DeformableModel belongs to a continuous</strong> – </p></li>
1364+
<li><p><strong>MultibodyPlant.</strong> – </p></li>
1365+
<li><p><strong>RuntimeError if Finalize</strong><strong>(</strong><strong>) </strong><strong>has been called on the multibody plant</strong> – </p></li>
1366+
<li><p><strong>owning this deformable model.</strong> – </p></li>
1367+
</ul>
1368+
</dd>
1369+
</dl>
1370+
</dd></dl>
1371+
13531372
<dl class="py method">
13541373
<dt class="sig sig-object py">
13551374
<span class="sig-name descname"><span class="pre">DeformableModel.AddFixedConstraint(self:</span> <span class="pre">pydrake.multibody.plant.DeformableModel,</span> <span class="pre">body_A_id:</span> <span class="pre">pydrake.multibody.tree.DeformableBodyId,</span> <span class="pre">body_B:</span> <span class="pre">pydrake.multibody.tree.RigidBody,</span> <span class="pre">X_BA:</span> <span class="pre">pydrake.math.RigidTransform,</span> <span class="pre">shape_G:</span> <span class="pre">pydrake.geometry.Shape,</span> <span class="pre">X_BG:</span> <span class="pre">pydrake.math.RigidTransform)</span> <span class="pre">-&gt;</span> <span class="pre">pydrake.multibody.tree.MultibodyConstraintId</span></span></dt>
@@ -1589,6 +1608,22 @@
15891608
</dl>
15901609
</dd></dl>
15911610

1611+
<dl class="py method">
1612+
<dt class="sig sig-object py">
1613+
<span class="sig-name descname"><span class="pre">DeformableModel.GetExternalForces(self:</span> <span class="pre">pydrake.multibody.plant.DeformableModel,</span> <span class="pre">id:</span> <span class="pre">pydrake.multibody.tree.DeformableBodyId)</span> <span class="pre">-&gt;</span> <span class="pre">list[pydrake.multibody.fem.ForceDensityFieldBase]</span></span></dt>
1614+
<dd><p>Returns the force density fields acting on the deformable body with
1615+
the given <code class="docutils literal notranslate"><span class="pre">id</span></code>.</p>
1616+
<dl class="field-list simple">
1617+
<dt class="field-odd">Raises<span class="colon">:</span></dt>
1618+
<dd class="field-odd"><ul class="simple">
1619+
<li><p><strong>RuntimeError if MultibodyPlant::Finalize</strong><strong>(</strong><strong>) </strong><strong>has not been called</strong> – </p></li>
1620+
<li><p><strong>yet.</strong><strong> or </strong><strong>if no deformable body with the given id has been</strong> – </p></li>
1621+
<li><p><strong>registered in this model.</strong> – </p></li>
1622+
</ul>
1623+
</dd>
1624+
</dl>
1625+
</dd></dl>
1626+
15921627
<dl class="py method">
15931628
<dt class="sig sig-object py">
15941629
<span class="sig-name descname"><span class="pre">DeformableModel.GetGeometryId(self:</span> <span class="pre">pydrake.multibody.plant.DeformableModel,</span> <span class="pre">id:</span> <span class="pre">pydrake.multibody.tree.DeformableBodyId)</span> <span class="pre">-&gt;</span> <span class="pre">pydrake.geometry.GeometryId</span></span></dt>

0 commit comments

Comments
 (0)