54void LastEquilibratedInternalForceAssembler :: vectorFromElement(
FloatArray& vec,
Element& element,
TimeStep* tStep, ValueModeType mode)
const
60void LinearizedDilationForceAssembler :: vectorFromElement(
FloatArray &vec,
Element &element,
TimeStep *tStep, ValueModeType mode)
const
69 if ( epsilonTemperature.giveSize() > 0 ) {
83 static_cast< StructuralElement &
>( element ).computeInitialStressMatrix(answer, tStep);
88 static_cast< StructuralElement &
>( element ).computeLumpedInitialStressMatrix(answer, tStep);
98StructuralEngngModel :: ~StructuralEngngModel()
103StructuralEngngModel :: printReactionForces(
TimeStep *tStep,
int di, FILE *out)
109 IntArray dofManMap, dofidMap, eqnMap;
121 fprintf(out,
"\n\n\tR E A C T I O N S O U T P U T:\n\t_______________________________\n\n\n");
129 for (
int i = 1; i <= dofManMap.
giveSize(); i++ ) {
131 fprintf(out,
"\tNode %8d iDof %2d reaction % .4e [bc-id: %d]\n",
133 dofidMap.
at(i), reactions.
at( eqnMap.
at(i) ),
139void StructuralEngngModel :: terminate(
TimeStep *tStep){
140 EngngModel :: terminate(tStep);
151 int rindex, count = 0;
154 restrDofMans.
resize(numRestrDofs);
155 restrDofs.
resize(numRestrDofs);
158 for (
int i = 1; i <= ndofMan; i++ ) {
160 for (
Dof *jdof: *inode ) {
161 if ( jdof->isPrimaryDof() && ( jdof->hasBc(tStep) ) ) {
162 rindex = jdof->__givePrescribedEquationNumber();
165 restrDofMans.
at(count) = i;
166 restrDofs.
at(count) = jdof->giveDofID();
167 eqn.
at(count) = rindex;
205StructuralEngngModel :: computeExternalLoadReactionContribution(
FloatArray &reactions,
TimeStep *tStep,
int di)
236StructuralEngngModel :: updateYourself(
TimeStep *tStep)
239 EngngModel :: updateYourself(tStep);
244StructuralEngngModel :: checkConsistency()
253 if ( sePtr == NULL && see == NULL && siePtr == NULL && sce == NULL ) {
254 OOFEM_WARNING(
"Element %d has no structural support", elem->giveLabel());
259 EngngModel :: checkConsistency();
266StructuralEngngModel :: printOutputAt(FILE *file,
TimeStep *tStep)
268 if ( !this->
giveDomain(1)->giveOutputManager()->testTimeStepOutput(tStep) ) {
272 EngngModel :: printOutputAt(file, tStep);
278StructuralEngngModel :: updateInternalState(
TimeStep *tStep)
283#pragma omp parallel for
285 for (
auto &dman : domain->giveDofManagers() ) {
291#pragma omp parallel for
293 for (
auto &bc : domain->giveBcs() ) {
298 for (
int j = 1; j <= ndman; j++ ) {
306#pragma omp parallel for
308 for (
auto &elem : domain->giveElements() ) {
309 elem->updateInternalState(tStep);
329 elem->showSparseMtrxStructure(TangentStiffnessMatrix,
gc, tStep);
Dof * giveDofWithID(int dofID) const
OutputManager * giveOutputManager()
int giveNumber()
Returns domain number.
int giveNumberOfDofManagers() const
Returns number of dof managers in domain.
DofManager * giveDofManager(int n)
std ::vector< std ::unique_ptr< Element > > & giveElements()
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep)
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
virtual double computeVolumeAround(GaussPoint *gp)
std ::vector< std ::unique_ptr< Domain > > domainList
List of problem domains.
virtual int giveNumberOfDomainEquations(int di, const UnknownNumberingScheme &num)
EngngModel(int i, EngngModel *_master=NULL)
virtual void updateDofUnknownsDictionary(DofManager *, TimeStep *)
Domain * giveDomain(int n)
@ InternalForcesExchangeTag
virtual int requiresUnknownsDictionaryUpdate()
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)
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
void zero()
Zeroes all coefficients of receiver.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void subtract(const FloatArray &src)
virtual int giveNumberOfInternalDofManagers()
Gives the number of internal dof managers.
virtual DofManager * giveInternalDofManager(int i)
Gives an internal dof manager from receiver.
void resizeWithValues(int n, int allocChunk=0)
int testDofManOutput(int, TimeStep *)
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)=0
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)=0
virtual void computeExternalLoadReactionContribution(FloatArray &reactions, TimeStep *tStep, int di)
StateCounterType internalVarUpdateStamp
FloatArray internalForcesEBENorm
Norm of nodal internal forces evaluated on element by element basis (squared).
void buildReactionTable(IntArray &restrDofMans, IntArray &restrDofs, IntArray &eqn, TimeStep *tStep, int di)
void updateInternalState(TimeStep *tStep)
void printReactionForces(TimeStep *tStep, int id, FILE *out)
void computeReaction(FloatArray &answer, TimeStep *tStep, int di)
virtual FloatArray computeStressIndependentStrainVector(GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const
void incrementStateCounter()
Updates solution state counter.
StateCounterType giveSolutionStateCounter()
#define OOFEM_WARNING(...)
#define OOFEM_LOG_DEBUG(...)
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]