35#ifndef AdditiveManufacturingProblem_h2
36#define AdditiveManufacturingProblem_h2
47#define _IFT_AdditiveManufacturingProblem_Name "AdditiveManufacturingProblem"
48#define _IFT_AdditiveManufacturingProblem_gcode "gcode"
49#define _IFT_AdditiveManufacturingProblem_stepx "stepx"
50#define _IFT_AdditiveManufacturingProblem_stepy "stepy"
51#define _IFT_AdditiveManufacturingProblem_stepz "stepz"
52#define _IFT_AdditiveManufacturingProblem_minvof "minvof"
53#define _IFT_AdditiveManufacturingProblem_skipsm "skipsm"
55#define _IFT_AdditiveManufacturingProblem_deltat "deltat"
56#define _IFT_AdditiveManufacturingProblem_dtf "dtf"
57#define _IFT_AdditiveManufacturingProblem_timeDefinedByProb "timedefinedbyprob"
58#define _IFT_AdditiveManufacturingProblem_stepmultiplier "stepmultiplier"
60#define _IFT_AdditiveManufacturingProblem_prescribedtimes "prescribedtimes"
61#define _IFT_AdditiveManufacturingProblem_prob1 "prob1"
62#define _IFT_AdditiveManufacturingProblem_prob2 "prob2"
63#define _IFT_AdditiveManufacturingProblem_prob3 "prob3"
64#define _IFT_AdditiveManufacturingProblem_coupling "coupling"
65#define _IFT_AdditiveManufacturingProblem_adaptiveStepLength "adaptivesteplength"
66#define _IFT_AdditiveManufacturingProblem_minsteplength "minsteplength"
67#define _IFT_AdditiveManufacturingProblem_maxsteplength "maxsteplength"
68#define _IFT_AdditiveManufacturingProblem_reqiterations "reqiterations"
69#define _IFT_AdditiveManufacturingProblem_endoftimeofinterest "endoftimeofinterest"
70#define _IFT_AdditiveManufacturingProblem_adaptivestepsince "adaptivestepsince"
71#define _IFT_AdditiveManufacturingProblem_maxprintercommands "maxcommands"
73#define _IFT_AdditiveManufacturingProblem_Printer_layerheight "layerheight"
74#define _IFT_AdditiveManufacturingProblem_Printer_extrusionwidth "extrusionwidth"
75#define _IFT_AdditiveManufacturingProblem_Printer_chambertemperature "chambertemperature"
76#define _IFT_AdditiveManufacturingProblem_Printer_depositiontemperature "depositiontemperature"
77#define _IFT_AdditiveManufacturingProblem_Printer_heatbedtemperature "heatbedtemperature"
78#define _IFT_AdditiveManufacturingProblem_Printer_heattransferfilmcoefficient "heattransferfilmcoefficient"
79#define _IFT_AdditiveManufacturingProblem_Printer_depositedmaterialheatpower "depositedmaterialheatpower"
196 void terminate(
TimeStep *tStep )
override;
197 void doStepOutput(
TimeStep *tStep )
override;
199 int instanciateYourself(
DataReader &dr,
InputRecord &ir,
const char *outFileName,
const char *desc )
override;
201 void updateAttributes(
MetaStep *mStep )
override;
205 void updateDomainLinks()
override;
219 const char *
giveClassName()
const override {
return "AdditiveManufacturingProblem"; }
234 double giveDeltaT(
int n );
239 double giveDiscreteTime(
int n );
244 if (key == FieldType::FT_VOF) {
245 return this->voxelVofField;
258 int checkProblemConsistency()
override;
260 EngngModel *giveSlaveProblem(
int i )
override;
262 int instanciateDefaultMetaStep(
InputRecord &ir )
override;
265 int instanciateSlaveProblems();
#define _IFT_AdditiveManufacturingProblem_Name
The Printer class is used to process G-code commands and manage the printer state.
void solveYourself() override
std ::vector< std ::string > inputStreamNames
double endOfTimeOfInterest
virtual const char * giveInputRecordName() const
FloatArray discreteTimes
Specified times where the problem is solved.
IntArray coupledModels
List of slave models to which this model is coupled.
double maxStepLength
adaptive time step length - maximum
double reqIterations
adaptive time step length - required (=optimum) number of iterations
AdditiveManufacturingProblem(int i, EngngModel *_master=nullptr)
double adaptiveStepSince
adaptive time step length applies after prescribed time
void setContextOutputMode(ContextOutputMode contextMode)
int forceEquationNumbering() override
int giveNumberOfFirstStep(bool force=false) override
AdditiveManufacturingProblem(const AdditiveManufacturingProblem &)=delete
AdditiveManufacturingProblem & operator=(const AdditiveManufacturingProblem &)=delete
EngngModel * giveTimeControl()
void initializeYourself(TimeStep *tStep) override
void setProblemMode(problemMode pmode)
void setRenumberFlag() override
Sets the renumber flag to true.
int useNonlocalStiffnessOption() override
Returns nonzero if nonlocal stiffness option activated.
void solveYourselfAt(TimeStep *tStep) override
void printOutputAt(FILE *file, TimeStep *tStep) override
TimeStep * giveCurrentStep(bool force=false) override
std::string gCodeFilePath
TimeStep * giveSolutionStepWhenIcApply(bool force=false) override
std ::vector< std ::unique_ptr< EngngModel > > emodelList
List of engineering models to solve sequentially.
int timeDefinedByProb
Optional parameter which specify problems to define load time functions.
void setUDContextOutputMode(int cStep)
fMode giveFormulation() override
int initializeAdaptive(int tStepNumber) override
FieldPtr giveField(FieldType key, TimeStep *tStep) override
const char * giveClassName() const override
Returns class name of the receiver.
void updateYourself(TimeStep *tStep) override
std ::shared_ptr< VoxelVOFField > voxelVofField
int giveNumberOfSlaveProblems() override
Returns number of slave problems.
TimeStep * givePreviousStep(bool force=false) override
void giveCoupledModels(IntArray &answer)
Returns list of model number that this model is coupled with. Used for staggered approach.
TimeStep * giveNextStep() override
Returns next time step (next to current step) of receiver.
double minStepLength
adaptive time step length - minimum
void showSparseMtrxStructure(int type, oofegGraphicContext &gc, TimeStep *tStep) override
int dtFunction
Associated time function for time step increment.
EngngModel(int i, EngngModel *_master=NULL)
FieldType
Physical type of field.
std::shared_ptr< Field > FieldPtr
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
A struct to represent a 3D model.
A struct to represent a single voxel.