45 #define _IFT_LEPLIC_refVol "refvol" 79 const FloatArray &normal,
const double p,
bool updFlag) = 0;
82 const FloatArray &normal,
const double p,
bool updFlag) = 0;
102 if ( !permanentVofFlag ) {
108 permanentVofFlag =
true;
111 if ( !permanentVofFlag ) {
113 if ( temp_vof > 1.0 ) {
170 orig_reference_fluid_volume = 0.0;
173 virtual void updatePosition(
TimeStep *tStep);
176 virtual void giveElementMaterialMixture(
FloatArray &answer,
int ielem);
177 virtual double giveNodalScalarRepresentation(
int);
178 virtual double computeCriticalTimeStep(
TimeStep *tStep);
185 answer.
at(1) = updated_XCoords.
at(num);
186 answer.
at(2) = updated_YCoords.
at(num);
199 void doLagrangianPhase(
TimeStep *tStep);
200 void doInterfaceReconstruction(
TimeStep *tStep,
bool coord_upd,
bool temp_vof);
201 void doInterfaceRemapping(
TimeStep *tStep);
202 void doCellDLS(
FloatArray &fvgrad,
int ie,
bool coord_upd,
bool temp_vof_flag);
203 void findCellLineConstant(
double &
p,
FloatArray &fvgrad,
int ie,
bool coord_upd,
bool temp_vof_flag);
216 iface(i), minterf(mi), normal(n), target_vof(target_vof_val), upd(upd_val) { }
double orig_reference_fluid_volume
contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores context of receiver into given stream.
void giveUpdatedCoordinate(FloatArray &answer, int num)
Returns updated nodal positions.
Element interface for LEPlic class representing Lagrangian-Eulerian (moving) material interface...
virtual void formVolumeInterfacePoly(Polygon &matvolpoly, LEPlic *matInterface, const FloatArray &normal, const double p, bool updFlag)=0
Assembles receiver material polygon based solely on given interface line.
virtual double computeLEPLICVolumeFraction(const FloatArray &n, const double p, LEPlic *matInterface, bool updFlag)=0
Computes corresponding volume fraction to given interface position.
virtual Element * giveElement()=0
Return number of receiver's element.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
void addTempVolumeFraction(double v)
double & at(int i)
Coefficient access function.
virtual double computeCriticalLEPlicTimeStep(TimeStep *tStep)=0
Computes critical time step.
void setPermanentVolumeFraction(double v)
double giveUpdatedYCoordinate(int num)
void setTempInterfaceNormal(FloatArray tg)
Abstract base class for all finite elements.
void giveTempInterfaceNormal(FloatArray &n)
LEPlic(int n, Domain *d)
Constructor.
FloatArray updated_XCoords
Array used to store updated x-coordinates of nodes as moved along streamlines.
LEPlicElementInterface * iface
void setNormal(FloatArray n)
void updateYourself(TimeStep *tStep)
virtual double computeMyVolume(LEPlic *matInterface, bool updFlag)=0
Computes the volume of receiver.
double giveTempLineConstant()
Abstract base class representing (moving) material interfaces.
virtual void giveElementCenter(LEPlic *mat_interface, FloatArray ¢er, bool updFlag)=0
Computes the receiver center (in updated Lagrangian configuration).
computeLEPLICVolumeFractionWrapper(LEPlicElementInterface *i, LEPlic *mi, const FloatArray &n, const double target_vof_val, bool upd_val)
Abstract base class representing Lagrangian-Eulerian (moving) material interfaces.
Class representing vector of real numbers.
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Class representing 2D polygon.
double giveTempVolumeFraction()
IRResultType
Type defining the return values of InputRecord reading operations.
void setTempLineConstant(double tp)
void setTempVolumeFraction(double v)
double giveVolumeFraction()
virtual double truncateMatVolume(const Polygon &matvolpoly, double &volume)=0
Truncates given material polygon to receiver.
double giveUpdatedXCoordinate(int num)
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
FloatArray updated_YCoords
Array used to store updated y-coordinates of nodes as moved along streamlines.
contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores context of receiver from given stream.
double vof
Volume fraction of reference fluid in element.
virtual void formMaterialVolumePoly(Polygon &matvolpoly, LEPlic *matInterface, const FloatArray &normal, const double p, bool updFlag)=0
Assembles the true element material polygon (takes receiver vof into accout).
double p
Line constant of line segment representing interface.
virtual void formMyVolumePoly(Polygon &myPoly, LEPlic *mat_interface, bool updFlag)=0
Assembles receiver volume.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual const char * giveClassName() const
FloatArray normal
Interface segment normal.
Class representing solution step.
bool isBoundary()
Returns true if cell is boundary.
void resize(int s)
Resizes receiver towards requested size.