void SolutionbasedShapeFunction :: setLoads(EngngModel *myEngngModel, int d) { DynamicInputRecord ir; FloatArray gradP; gradP.resize( this->giveDomain()->giveNumberOfSpatialDimensions() ); gradP.zero(); gradP.at(d) = 1.0; ir.setRecordKeywordField("deadweight", 1); ir.setField(gradP, _IFT_Load_components); ir.setField(1, _IFT_GeneralBoundaryCondition_timeFunct); int bcID = myEngngModel->giveDomain(1)->giveNumberOfBoundaryConditions() + 1; GeneralBoundaryCondition *myBodyLoad; myBodyLoad = classFactory.createBoundaryCondition( "deadweight", bcID, myEngngModel->giveDomain(1) ); myBodyLoad->initializeFrom(& ir); myEngngModel->giveDomain(1)->setBoundaryCondition(bcID, myBodyLoad); for ( int i = 1; i <= myEngngModel->giveDomain(1)->giveNumberOfElements(); i++ ) { IntArray *blArray; blArray = myEngngModel->giveDomain(1)->giveElement(i)->giveBodyLoadArray(); blArray->resizeWithValues(blArray->giveSize() + 1); blArray->at( blArray->giveSize() ) = bcID; } }
void SolutionbasedShapeFunction :: setBoundaryConditionOnDof(Dof *d, double value) { int bcID = d->giveBcId(); if ( bcID == 0 ) { DynamicInputRecord ir; ir.setRecordKeywordField("boundarycondition", 1); ir.setField(1, _IFT_GeneralBoundaryCondition_timeFunct); ir.setField(value, _IFT_BoundaryCondition_PrescribedValue); bcID = d->giveDofManager()->giveDomain()->giveNumberOfBoundaryConditions() + 1; GeneralBoundaryCondition *myBC; myBC = classFactory.createBoundaryCondition( "boundarycondition", bcID, d->giveDofManager()->giveDomain() ); myBC->initializeFrom(& ir); d->giveDofManager()->giveDomain()->setBoundaryCondition(bcID, myBC); d->setBcId(bcID); } else { BoundaryCondition *bc = static_cast< BoundaryCondition * >( d->giveDofManager()->giveDomain()->giveBc(bcID) ); bc->setPrescribedValue(value); } }