Project Chrono: chrono::ChFluidContainer Class Reference

Public Member Functions | Public Attributes | List of all members
chrono::ChFluidContainer Class Reference
MULTICORE module » Physics objects

## Description

Container of fluid particles.

`#include <Ch3DOFContainer.h>`

Inheritance diagram for chrono::ChFluidContainer:
[legend]
Collaboration diagram for chrono::ChFluidContainer:
[legend]

## Public Member Functions
void | AddBodies (const std::vector< real3 > &positions, const std::vector< real3 > &velocities)
virtual void | Update3DOF (double ChTime) override
virtual void | UpdatePosition (double ChTime) override
virtual unsigned int | GetNumConstraints () override
| Get the number of scalar constraints.
virtual unsigned int | GetNumNonZeros () override
virtual void | Setup3DOF (int start_constraint) override
virtual void | Initialize () override
virtual void | PreSolve () override
void | Density_Fluid ()
void | Density_FluidMPM ()
void | DensityConstraint_FluidMPM ()
void | Normalize_Density_Fluid ()
virtual void | Build_D () override
virtual void | Build_b () override
virtual void | Build_E () override
virtual void | Project (real *gamma) override
virtual void | GenerateSparsity () override
virtual void | ComputeInvMass (int offset) override
virtual void | ComputeMass (int offset) override
virtual void | PostSolve () override
virtual void | CalculateContactForces () override
virtual real3 | GetBodyContactForce (std::shared_ptr< ChBody > body) override
virtual real3 | GetBodyContactTorque (std::shared_ptr< ChBody > body) override
void | GetFluidDensity (custom_vector< real > &dens)
void | GetFluidPressure (custom_vector< real > &pres)
void | GetFluidForce (custom_vector< real3 > &forc)
Public Member Functions inherited from chrono::Ch3DOFContainer
| Ch3DOFContainer (const Ch3DOFContainer &other)
Ch3DOFContainer & | operator= (const Ch3DOFContainer &other)
virtual void | ComputeDOF ()
virtual void | InnerSolve ()
virtual void | UpdateRhs ()
void | SetFamily (short family, short mask_no_collision)
uint | GetNumParticles () const
real3 | GetPos (int i)
void | SetPos (const int &i, const real3 &mpos)
real3 | GetPosDt (int i)
void | SetPosDt (const int &i, const real3 &mposdt)
Public Member Functions inherited from chrono::ChPhysicsItem
| ChPhysicsItem (const ChPhysicsItem &other)
virtual ChPhysicsItem * | Clone () const override
| "Virtual" copy constructor (covariant return type).
ChSystem * | GetSystem () const
| Get the pointer to the parent ChSystem().
virtual void | SetSystem (ChSystem *m_system)
| Set the pointer to the parent ChSystem().
void | AddVisualModel (std::shared_ptr< ChVisualModel > model)
| Add an (optional) visualization model.
std::shared_ptr< ChVisualModel > | GetVisualModel () const
| Access the visualization model (if any).
void | AddVisualShape (std::shared_ptr< ChVisualShape > shape, const ChFrame<> &frame=ChFrame<>())
| Add the specified visual shape to the visualization model.
std::shared_ptr< ChVisualShape > | GetVisualShape (unsigned int i) const
| Access the specified visualization shape in the visualization model (if any).
void | AddVisualShapeFEA (std::shared_ptr< ChVisualShapeFEA > shapeFEA)
| Add the specified FEA visualization object to the visualization model.
std::shared_ptr< ChVisualShapeFEA > | GetVisualShapeFEA (unsigned int i) const
| Access the specified FEA visualization object in the visualization model (if any).
virtual ChFrame | GetVisualModelFrame (unsigned int nclone=0) const
| Get the reference frame (expressed in and relative to the absolute frame) of the visual model.
virtual unsigned int | GetNumVisualModelClones () const
| Return the number of clones of the visual model associated with this physics item.
void | AddCamera (std::shared_ptr< ChCamera > camera)
| Attach a ChCamera to this physical item.
std::vector< std::shared_ptr< ChCamera > > | GetCameras () const
| Get the set of cameras attached to this physics item.
virtual bool | IsActive () const
| Return true if the object is active and included in dynamics.
virtual bool | IsCollisionEnabled () const
| Tell if the object is subject to collision.
virtual void | AddCollisionModelsToSystem (ChCollisionSystem *coll_sys) const
| Add to the provided collision system any collision models managed by this physics item.
virtual void | RemoveCollisionModelsFromSystem (ChCollisionSystem *coll_sys) const
| Remove from the provided collision system any collision models managed by this physics item.
virtual void | SyncCollisionModels ()
| Synchronize the position and bounding box of any collsion models managed by this physics item.
virtual ChAABB | GetTotalAABB ()
| Get the entire AABB axis-aligned bounding box of the object.
virtual void | GetCenter (ChVector3d &mcenter)
| Get a symbolic 'center' of the object.
virtual void | Setup ()
| This might recompute the number of coordinates, DOFs, constraints, in case this might change (ex in ChAssembly), as well as state offsets of contained items (ex in ChMesh).
virtual void | Update (double mytime, bool update_assets=true)
| This is an important function, which is called by the owner ChSystem at least once per integration step.
virtual void | Update (bool update_assets=true)
| As above, but does not require updating of time-dependent data.
virtual void | ForceToRest ()
| Set zero speed (and zero accelerations) in state, without changing the position.
virtual unsigned int | GetNumCoordsPosLevel ()
| Get the number of coordinates at the position level.
virtual unsigned int | GetNumCoordsVelLevel ()
| Get the number of coordinates at the velocity level.
virtual unsigned int | GetNumConstraintsBilateral ()
| Get the number of bilateral scalar constraints.
virtual unsigned int | GetNumConstraintsUnilateral ()
| Get the number of unilateral scalar constraints.
unsigned int | GetOffset_x ()
| Get offset in the state vector (position part).
unsigned int | GetOffset_w ()
| Get offset in the state vector (speed part).
unsigned int | GetOffset_L ()
| Get offset in the lagrangian multipliers.
void | SetOffset_x (const unsigned int moff)
| Set offset in the state vector (position part) Note: only the ChSystem::Setup function should use this.
void | SetOffset_w (const unsigned int moff)
| Set offset in the state vector (speed part) Note: only the ChSystem::Setup function should use this.
void | SetOffset_L (const unsigned int moff)
| Set offset in the lagrangian multipliers Note: only the ChSystem::Setup function should use this.
virtual void | IntStateGather (const unsigned int off_x, ChState &x, const unsigned int off_v, ChStateDelta &v, double &T)
| From item's state to global state vectors y={x,v} pasting the states at the specified offsets.
virtual void | IntStateScatter (const unsigned int off_x, const ChState &x, const unsigned int off_v, const ChStateDelta &v, const double T, bool full_update)
| From global state vectors y={x,v} to item's state (and update) fetching the states at the specified offsets.
virtual void | IntStateGatherAcceleration (const unsigned int off_a, ChStateDelta &a)
| From item's state acceleration to global acceleration vector.
virtual void | IntStateScatterAcceleration (const unsigned int off_a, const ChStateDelta &a)
| From global acceleration vector to item's state acceleration.
virtual void | IntStateGatherReactions (const unsigned int off_L, ChVectorDynamic<> &L)
| From item's reaction forces to global reaction vector.
virtual void | IntStateScatterReactions (const unsigned int off_L, const ChVectorDynamic<> &L)
| From global reaction vector to item's reaction forces.
virtual void | IntStateIncrement (const unsigned int off_x, ChState &x_new, const ChState &x, const unsigned int off_v, const ChStateDelta &Dv)
| Computes x_new = x + Dt , using vectors at specified offsets.
virtual void | IntStateGetIncrement (const unsigned int off_x, const ChState &x_new, const ChState &x, const unsigned int off_v, ChStateDelta &Dv)
| Computes Dt = x_new - x, using vectors at specified offsets.
virtual void | IntLoadResidual_F (const unsigned int off, ChVectorDynamic<> &R, const double c)
| Takes the F force term, scale and adds to R at given offset: R += c*F.
virtual void | IntLoadResidual_Mv (const unsigned int off, ChVectorDynamic<> &R, const ChVectorDynamic<> &w, const double c)
| Takes the M*v term, multiplying mass by a vector, scale and adds to R at given offset: R += c*M*w.
virtual void | IntLoadLumpedMass_Md (const unsigned int off, ChVectorDynamic<> &Md, double &err, const double c)
| Adds the lumped mass to a Md vector, representing a mass diagonal matrix.
virtual void | IntLoadResidual_CqL (const unsigned int off_L, ChVectorDynamic<> &R, const ChVectorDynamic<> &L, const double c)
| Takes the term Cq'*L, scale and adds to R at given offset: R += c*Cq'*L.
virtual void | IntLoadConstraint_C (const unsigned int off, ChVectorDynamic<> &Qc, const double c, bool do_clamp, double recovery_clamp)
| Takes the term C, scale and adds to Qc at given offset: Qc += c*C.
virtual void | IntLoadConstraint_Ct (const unsigned int off, ChVectorDynamic<> &Qc, const double c)
| Takes the term Ct, scale and adds to Qc at given offset: Qc += c*Ct.
virtual void | IntToDescriptor (const unsigned int off_v, const ChStateDelta &v, const ChVectorDynamic<> &R, const unsigned int off_L, const ChVectorDynamic<> &L, const ChVectorDynamic<> &Qc)
| Prepare variables and constraints to accommodate a solution:
virtual void | IntFromDescriptor (const unsigned int off_v, ChStateDelta &v, const unsigned int off_L, ChVectorDynamic<> &L)
| After a solver solution, fetch values from variables and constraints into vectors:
virtual void | InjectVariables (ChSystemDescriptor &descriptor)
| Register with the given system descriptor any ChVariable objects associated with this item.
virtual void | InjectConstraints (ChSystemDescriptor &descriptor)
| Register with the given system descriptor any ChConstraint objects associated with this item.
virtual void | LoadConstraintJacobians ()
| Compute and load current Jacobians in encapsulated ChConstraint objects.
virtual void | InjectKRMMatrices (ChSystemDescriptor &descriptor)
| Register with the given system descriptor any ChKRMBlock objects associated with this item.
virtual void | LoadKRMMatrices (double Kfactor, double Rfactor, double Mfactor)
| Compute and load current stiffnes (K), damping (R), and mass (M) matrices in encapsulated ChKRMBlock objects.
virtual void | VariablesFbReset ()
| Sets the 'fb' part (the known term) of the encapsulated ChVariables to zero.
virtual void | VariablesFbLoadForces (double factor=1)
| Adds the current forces (applied to item) into the encapsulated ChVariables, in the 'fb' part: qf+=forces*factor.
virtual void | VariablesQbLoadSpeed ()
| Initialize the 'qb' part of the ChVariables with the current value of speeds.
virtual void | VariablesFbIncrementMq ()
| Adds M*q (masses multiplied current 'qb') to Fb, ex.
virtual void | VariablesQbSetSpeed (double step=0)
| Fetches the item speed (ex.
virtual void | VariablesQbIncrementPosition (double step)
| Increment item positions by the 'qb' part of the ChVariables, multiplied by a 'step' factor.
virtual void | ConstraintsBiReset ()
| Sets to zero the known term (b_i) of encapsulated ChConstraints.
virtual void | ConstraintsBiLoad_C (double factor=1, double recovery_clamp=0.1, bool do_clamp=false)
| Adds the current C (constraint violation) to the known term (b_i) of encapsulated ChConstraints.
virtual void | ConstraintsBiLoad_Ct (double factor=1)
| Adds the current Ct (partial t-derivative, as in C_dt=0-> [Cq]*q_dt=-Ct) to the known term (b_i) of encapsulated ChConstraints.
virtual void | ConstraintsBiLoad_Qc (double factor=1)
| Adds the current Qc (the vector of C_dtdt=0 -> [Cq]*q_dtdt=Qc ) to the known term (b_i) of encapsulated ChConstraints.
virtual void | ConstraintsFbLoadForces (double factor=1)
| Adds the current link-forces, if any, (caused by springs, etc.) to the 'fb' vectors of the ChVariables referenced by encapsulated ChConstraints.
virtual void | ConstraintsFetch_react (double factor=1)
| Fetches the reactions from the lagrangian multiplier (l_i) of encapsulated ChConstraints.
virtual void | ArchiveOut (ChArchiveOut &archive_out) override
| Method to allow serialization of transient data to archives.
virtual void | ArchiveIn (ChArchiveIn &archive_in) override
| Method to allow deserialization of transient data from archives.
Public Member Functions inherited from chrono::ChObj
| ChObj (const ChObj &other)
int | GetIdentifier () const
| Get the unique integer identifier of this object.
void | SetTag (int tag)
| Set an object integer tag (default: -1).
int | GetTag () const
| Get the tag of this object.
void | SetName (const std::string &myname)
| Set the name of this object.
const std::string & | GetName () const
| Get the name of this object.
double | GetChTime () const
| Gets the simulation time of this object.
void | SetChTime (double m_time)
| Sets the simulation time of this object.
virtual std::string & | ArchiveContainerName ()

## Public Attributes
custom_vector< Mat33 > | shear_tensor
custom_vector< real > | shear_trace
custom_vector< real > | density
uint | start_boundary
uint | start_density
uint | start_viscous
real | yield_stress
real | epsilon
real | tau
real | rho
real | mass
real | viscosity
bool | artificial_pressure
real | artificial_pressure_k
real | artificial_pressure_n
real | artificial_pressure_dq
bool | enable_viscosity
real | nu
real | youngs_modulus
real | hardening_coefficient
real | lame_lambda
real | lame_mu
real | theta_s
real | theta_c
real | alpha_flip
int | mpm_iterations
std::thread | mpm_thread
bool | mpm_init
MPM_Settings | temp_settings
custom_vector< float > | mpm_pos
custom_vector< float > | mpm_vel
custom_vector< float > | mpm_jejp
Public Attributes inherited from chrono::Ch3DOFContainer
real | kernel_radius
real | collision_envelope
real | contact_recovery_speed
real | contact_cohesion
real | contact_compliance
real | contact_mu
real | max_velocity
uint | start_row
real | alpha
DynamicVector< real > | contact_forces
DynamicVector< real > | gamma_old
short2 | family

## Additional Inherited Members
Protected Member Functions inherited from chrono::ChObj
int | GenerateUniqueIdentifier ()
Protected Attributes inherited from chrono::Ch3DOFContainer
ChMulticoreDataManager * | data_manager
uint | num_fluid_contacts
uint | num_fluid_bodies
uint | num_rigid_bodies
uint | num_rigid_fluid_contacts
uint | num_rigid_mpm_contacts
uint | num_unilaterals
uint | num_bilaterals
uint | num_shafts
uint | num_motors
Protected Attributes inherited from chrono::ChPhysicsItem
ChSystem * | system
| parent system
std::shared_ptr< ChVisualModelInstance > | vis_model_instance
| instantiated visualization model
std::vector< std::shared_ptr< ChCamera > > | cameras
| set of cameras
unsigned int | offset_x
| offset in vector of state (position part)
unsigned int | offset_w
| offset in vector of state (speed part)
unsigned int | offset_L
| offset in vector of lagrangian multipliers
Protected Attributes inherited from chrono::ChObj
double | ChTime
| object simulation time
std::string | m_name
| object name
int | m_identifier
| object unique identifier
int | m_tag
| user-supplied tag

## Member Function Documentation

## ◆ Build_b()

void chrono::ChFluidContainer::Build_b | ( |  | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ Build_D()

void chrono::ChFluidContainer::Build_D | ( |  | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ Build_E()

void chrono::ChFluidContainer::Build_E | ( |  | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ CalculateContactForces()

void chrono::ChFluidContainer::CalculateContactForces | ( |  | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ ComputeInvMass()

void chrono::ChFluidContainer::ComputeInvMass | ( | int | offset | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ ComputeMass()

void chrono::ChFluidContainer::ComputeMass | ( | int | offset | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ DensityConstraint_FluidMPM()

void chrono::ChFluidContainer::DensityConstraint_FluidMPM | ( |  | ) |

printf("jpjp: %f d: %f\n", (mpm_jejp[body_b * 2 + 0] / mpm_jejp[body_b * 2 + 1]) * step_size, mass_over_density);

## ◆ GenerateSparsity()

void chrono::ChFluidContainer::GenerateSparsity | ( |  | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ GetBodyContactForce()

real3 chrono::ChFluidContainer::GetBodyContactForce | ( | std::shared_ptr< ChBody > | body | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ GetBodyContactTorque()

real3 chrono::ChFluidContainer::GetBodyContactTorque | ( | std::shared_ptr< ChBody > | body | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ GetNumConstraints()

unsigned int chrono::ChFluidContainer::GetNumConstraints | ( |  | ) |
| overridevirtual

Get the number of scalar constraints.

Reimplemented from chrono::Ch3DOFContainer.

## ◆ GetNumNonZeros()

unsigned int chrono::ChFluidContainer::GetNumNonZeros | ( |  | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ Initialize()

void chrono::ChFluidContainer::Initialize | ( |  | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ PostSolve()

void chrono::ChFluidContainer::PostSolve | ( |  | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ PreSolve()

void chrono::ChFluidContainer::PreSolve | ( |  | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ Project()

void chrono::ChFluidContainer::Project | ( | real * | gamma | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ Setup3DOF()

void chrono::ChFluidContainer::Setup3DOF | ( | int | start_constraint | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ Update3DOF()

void chrono::ChFluidContainer::Update3DOF | ( | double | ChTime | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

## ◆ UpdatePosition()

void chrono::ChFluidContainer::UpdatePosition | ( | double | ChTime | ) |
| overridevirtual

Reimplemented from chrono::Ch3DOFContainer.

The documentation for this class was generated from the following files:

- D:/W/B/src/chrono-9.0.1/src/chrono_multicore/physics/Ch3DOFContainer.h
- D:/W/B/src/chrono-9.0.1/src/chrono_multicore/physics/ChFluidContainer.cpp