72IncrementalLinearStatic :: ~IncrementalLinearStatic()
90void IncrementalLinearStatic :: initializeFrom(
InputRecord &ir)
118 printf(
"Suppressing output.\n");
135double IncrementalLinearStatic :: giveDiscreteTime(
int iStep)
138 return this->
deltaT * iStep;
140 if ( ( iStep > 0 ) && ( iStep <=
discreteTimes.giveSize() ) ) {
161void IncrementalLinearStatic :: solveYourself()
164 StructuralEngngModel :: solveYourself();
167void IncrementalLinearStatic :: solveYourselfAt(
TimeStep *tStep)
193 for (
int inode = 1; inode <= nodes.
giveSize(); ++inode ) {
194 for (
int idof = 1; idof <= appliedDofs.
giveSize(); ++idof ) {
196 if ( dof_bc [ nodes.
at(inode) - 1 ].find( appliedDofs.
at(idof) ) == dof_bc [ nodes.
at(inode) - 1 ].end() ) {
198 dof_bc [ nodes.
at(inode) - 1 ] [ appliedDofs.
at(idof) ] = i;
207 OOFEM_WARNING(
"More than one boundary condition assigned at time %f to node %d dof %d. Considering boundary condition %d", tStep->
giveTargetTime(), nodes.
at(inode), appliedDofs.
at(idof), dof_bc [ nodes.
at(inode) - 1 ] [appliedDofs.
at(idof)] );
227 for (
Dof *dof: *dofman ) {
229 dof->updateUnknownsDictionary(tStep, VM_Total, 0.);
233 for (
auto &bc : d->
giveBcs() ) {
238 for (
int i = 1; i <= ndman; i++ ) {
240 for (
Dof *dof: *dofman ) {
242 dof->updateUnknownsDictionary(tStep, VM_Total, 0.);
251 for (
Dof *dof: *dofman ) {
253 if ( dof->hasBc(tStep) ) {
254 tot += dof->giveBcValue(VM_Incremental, tStep);
257 dof->updateUnknownsDictionary(tStep, VM_Total, tot);
317double IncrementalLinearStatic :: giveUnknownComponent(ValueModeType mode,
TimeStep *tStep,
Domain *d,
Dof *dof)
324 OOFEM_ERROR(
"Dof unknowns dictionary does not contain unknown of value mode (%s)", __ValueModeTypeToString(mode) );
327 OOFEM_ERROR(
"Only the mode requiresUnknownsDictionaryUpdate() is supported");
334int IncrementalLinearStatic :: giveUnknownDictHashIndx(ValueModeType mode,
TimeStep *tStep)
350 for (
Dof *dof: *inode ) {
352 if ( !dof->isPrimaryDof() ) {
355 val = dof->giveUnknown(VM_Total, tStep);
356 if ( !dof->hasBc(tStep) ) {
361 dof->updateUnknownsDictionary(tStep, VM_Total, val);
368 StructuralEngngModel :: saveContext(stream, mode);
374 StructuralEngngModel :: restoreContext(stream, mode);
#define REGISTER_EngngModel(class)
virtual bool requiresActiveDofs()
Dof * giveDofWithID(int dofID) const
virtual void giveUnknowns(FloatArray &masterUnknowns, ValueModeType mode, TimeStep *tStep)
virtual void setBcId(int bcId)
Overwrites the boundary condition id (0-inactive BC), intended for specific purposes such as coupling...
int giveNumberOfBoundaryConditions() const
Returns number of boundary conditions in domain.
std ::vector< std ::unique_ptr< DofManager > > & giveDofManagers()
int giveNumberOfDofManagers() const
Returns number of dof managers in domain.
std ::vector< std ::unique_ptr< GeneralBoundaryCondition > > & giveBcs()
DofManager * giveDofManager(int n)
GeneralBoundaryCondition * giveBc(int n)
int giveNumberOfTimeStepWhenIcApply()
Returns the time step number, when initial conditions should apply.
virtual int giveNumberOfDomainEquations(int di, const UnknownNumberingScheme &num)
std::string dataOutputFileName
Path to output stream.
std::string simulationDescription
std ::unique_ptr< TimeStep > previousStep
Previous time step.
MetaStep * giveCurrentMetaStep()
Returns current meta step.
int ndomains
Number of receiver domains.
int numberOfSteps
Total number of time steps.
Domain * giveDomain(int n)
std ::unique_ptr< TimeStep > currentStep
Current time step.
time_t startTime
Solution start time.
virtual int forceEquationNumbering(int i)
bool suppressOutput
Flag for suppressing output to file.
FILE * outputStream
Output stream.
int updateSharedDofManagers(FloatArray &answer, const UnknownNumberingScheme &s, int ExchangeTag)
void assembleVector(FloatArray &answer, TimeStep *tStep, const VectorAssembler &va, ValueModeType mode, const UnknownNumberingScheme &s, Domain *domain, FloatArray *eNorms=NULL)
virtual int giveNumberOfInternalDofManagers()
Gives the number of internal dof managers.
virtual const IntArray & giveDofIDs() const
virtual bool isImposed(TimeStep *tStep)
virtual DofManager * giveInternalDofManager(int i)
Gives an internal dof manager from receiver.
int giveSetNumber() const
FloatArray incrementOfDisplacementVector
FloatArray internalLoadVector
int giveUnknownDictHashIndx(ValueModeType mode, TimeStep *tStep) override
NumericalMethod * giveNumericalMethod(MetaStep *mStep) override
Returns reference to receiver's numerical method.
std ::unique_ptr< SparseMtrx > stiffnessMatrix
double endOfTimeOfInterest
SparseMtrxType sparseMtrxType
int requiresUnknownsDictionaryUpdate() override
LinSystSolverType solverType
double giveDiscreteTime(int iStep)
std ::unique_ptr< SparseLinearSystemNM > nMethod
Numerical method used to solve the problem.
const IntArray & giveNodeList()
StructuralEngngModel(int i, EngngModel *master=nullptr)
Creates new StructuralEngngModel with number i, associated to domain d.
ConvergedReason convergedReason
Status of solution step (Converged,.
double giveTargetTime()
Returns target time.
int giveNumber()
Returns receiver's number.
TimeStep * givePreviousStep()
Returns pointer to previous solution step.
#define _IFT_EngngModel_nsteps
#define _IFT_EngngModel_suppressOutput
#define _IFT_EngngModel_lstype
#define _IFT_EngngModel_smtype
#define OOFEM_WARNING(...)
#define _IFT_IncrementalLinearStatic_endoftimeofinterest
#define _IFT_IncrementalLinearStatic_deltat
#define _IFT_IncrementalLinearStatic_prescribedtimes
#define OOFEM_LOG_INFO(...)
#define OOFEM_LOG_RELEVANT(...)
FloatArrayF< N > assemble(const FloatArrayF< M > &x, int const (&c)[M])
Assemble components into zero matrix.
ClassFactory & classFactory
OOFEM_EXPORT const char * PRG_HEADER