50#define _IFT_PFEM_Name "pfem"
51#define _IFT_PFEM_deltat "deltat"
52#define _IFT_PFEM_mindeltat "mindeltat"
53#define _IFT_PFEM_alphashapecoef "alphashapecoef"
54#define _IFT_PFEM_particalRemovalRatio "removalratio"
55#define _IFT_PFEM_printVolumeReport "volumereport"
56#define _IFT_PFEM_discretizationScheme "scheme"
57#define _IFT_PFEM_associatedMaterial "material"
58#define _IFT_PFEM_associatedCrossSection "cs"
59#define _IFT_PFEM_pressureBC "pressure"
60#define _IFT_PFEM_rtolv "rtolv"
61#define _IFT_PFEM_rtolp "rtolp"
62#define _IFT_PFEM_maxiter "maxiter"
128 std :: unique_ptr< SparseLinearSystemNM >
nMethod;
137 std :: unique_ptr< SparseMtrx >
pLhs;
virtual int forceEquationNumbering()
EngngModel(int i, EngngModel *_master=NULL)
int ndomains
Number of receiver domains.
void locationFromElement(IntArray &loc, Element &element, const UnknownNumberingScheme &s, IntArray *dofIds=nullptr) const override
Default implementation takes all the DOF IDs.
void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override
PFEMCorrectionRhsAssembler(double deltaT)
void locationFromElement(IntArray &loc, Element &element, const UnknownNumberingScheme &s, IntArray *dofIds=nullptr) const override
Default implementation takes all the DOF IDs.
void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override
void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override
void locationFromElement(IntArray &loc, Element &element, const UnknownNumberingScheme &s, IntArray *dofIds=nullptr) const override
Default implementation takes all the DOF IDs.
void matrixFromElement(FloatMatrix &mat, Element &element, TimeStep *tStep) const override
void locationFromElement(IntArray &loc, Element &element, const UnknownNumberingScheme &s, IntArray *dofIds=nullptr) const override
void vectorFromElement(FloatArray &vec, Element &element, TimeStep *tStep, ValueModeType mode) const override
std ::unique_ptr< SparseLinearSystemNM > nMethod
Numerical method used to solve the problem.
int giveAssociatedMaterialNumber()
Returns number of material to be associated with created elements.
FloatArray AuxVelocity
Array of auxiliary velocities used during computation.
void applyIC(TimeStep *)
Initializes velocity and pressure fields in the first step with prescribed values.
void solveYourselfAt(TimeStep *) override
void saveContext(DataStream &stream, ContextMode mode) override
void updateInternalState(TimeStep *)
void updateDofUnknownsDictionaryVelocities(DofManager *inode, TimeStep *tStep)
Writes velocities into the dof unknown dictionaries.
int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *stepN) override
int maxiter
Max number of iterations.
bool printVolumeReport
Flag for volume report.
int checkConsistency() override
LinSystSolverType solverType
Used solver type for linear system of equations.
void updateDofUnknownsDictionaryPressure(DofManager *inode, TimeStep *tStep)
Writes pressures into the dof unknown dictionaries.
double domainVolume
Area or volume of the fluid domain, which can be controlled.
AuxVelocityNumberingScheme avns
Auxiliary Velocity numbering.
fMode giveFormulation() override
int associatedCrossSection
Number of cross section to associate with created elements.
PFEM(int i, EngngModel *_master=nullptr)
PressureNumberingScheme pns
Pressure numbering.
void printDofOutputAt(FILE *stream, Dof *iDof, TimeStep *atTime) override
double deltaT
Time step length.
SparseMtrxType sparseMtrxType
Used type of sparse matrix.
FloatArray avLhs
Left-hand side matrix for the auxiliary velocity equations.
int giveAssociatedCrossSectionNumber()
Returns number of cross section to be associated with created elements.
double rtolv
Convergence tolerance.
const char * giveClassName() const override
Returns class name of the receiver.
void deactivateTooCloseParticles()
Deactivates particles upon the particalRemovalRatio.
int giveNewEquationNumber(int domain, DofIDItem) override
TimeStep * giveSolutionStepWhenIcApply(bool force=false) override
VelocityNumberingScheme vns
Velocity numbering.
PrimaryField VelocityField
Velocity field.
int discretizationScheme
Explicit or implicit time discretization.
std ::unique_ptr< SparseMtrx > pLhs
Left-hand side matrix for the pressure equations.
TimeStep * giveNextStep() override
Returns next time step (next to current step) of receiver.
FloatArray vLhs
Left-hand side matrix for the velocity equations.
int associatedMaterial
Number of material to associate with created elements.
double minDeltaT
Minimal value of time step.
int associatedPressureBC
Number of pressure boundary condition to be prescribed on free surface.
void preInitializeNextStep() override
double giveUnknownComponent(ValueModeType mode, TimeStep *tStep, Domain *d, Dof *dof) override
void updateYourself(TimeStep *tStep) override
int giveNumberOfDomainEquations(int, const UnknownNumberingScheme &num) override
void initializeFrom(InputRecord &ir) override
Initialization from given input record.
PrimaryField PressureField
Pressure field.
int giveNewPrescribedEquationNumber(int domain, DofIDItem) override
double alphaShapeCoef
Value of alpha coefficient for the boundary recognition.
void updateDofUnknownsDictionary(DofManager *inode, TimeStep *tStep) override
int giveAssociatedPressureBC()
Returns number of zero pressure boundary condition to be prescribed on free surface.
NumericalMethod * giveNumericalMethod(MetaStep *) override
Returns reference to receiver's numerical method.
int requiresUnknownsDictionaryUpdate() override
double particleRemovalRatio
Element side ratio for the removal of the close partices.
void restoreContext(DataStream &stream, ContextMode mode) override
void resetEquationNumberings()
Resets the equation numberings as the mesh is recreated in each time step.
VelocityNumberingScheme prescribedVns
Prescribed velocity numbering.