106FluidStructureProblem :: solveYourselfAt(
TimeStep *stepN)
115 FloatArray currentInteractionParticlesVelocities;
116 FloatArray currentInteractionParticlesPressures;
117 FloatArray previousInteractionParticlesVelocities;
118 FloatArray previousInteractionParticlesPressures;
122 for (
int i = 1; i <= ndman; i++ ) {
134 double velocityDifference = 1.0;
135 double pressureDifference = 1.0;
139 previousInteractionParticlesPressures = currentInteractionParticlesPressures;
140 previousInteractionParticlesVelocities = currentInteractionParticlesVelocities;
143 emodel->solveYourselfAt(stepN);
151 currentInteractionParticlesVelocities.
at(2 * ( i - 1 ) + 1) = velocities.
at(1);
152 currentInteractionParticlesVelocities.
at(2 * ( i - 1 ) + 2) = velocities.
at(2);
155 pressureDifference = 0.0;
156 velocityDifference = 0.0;
157 for (
int i = 1; i <= currentInteractionParticlesPressures.
giveSize(); i++ ) {
158 pressureDifference += ( currentInteractionParticlesPressures.
at(i) - previousInteractionParticlesPressures.
at(i) ) * ( currentInteractionParticlesPressures.
at(i) - previousInteractionParticlesPressures.
at(i) );
159 velocityDifference += ( currentInteractionParticlesVelocities.
at(2 * ( i - 1 ) + 1) - previousInteractionParticlesVelocities.
at(2 * ( i - 1 ) + 1) ) * ( currentInteractionParticlesVelocities.
at(2 * ( i - 1 ) + 1) - previousInteractionParticlesVelocities.
at(2 * ( i - 1 ) + 1) );
160 velocityDifference += ( currentInteractionParticlesVelocities.
at(2 * ( i - 1 ) + 2) - previousInteractionParticlesVelocities.
at(2 * ( i - 1 ) + 2) ) * ( currentInteractionParticlesVelocities.
at(2 * ( i - 1 ) + 2) - previousInteractionParticlesVelocities.
at(2 * ( i - 1 ) + 2) );
162 pressureDifference = sqrt(pressureDifference);
163 velocityDifference = sqrt(velocityDifference);
166 pressureDifference /= previousInteractionParticlesPressures.
computeNorm();
167 velocityDifference /= previousInteractionParticlesVelocities.
computeNorm();
173 OOFEM_ERROR(
"Maximal fluid-structure interface iteration count exceded");
int giveNumberOfDofManagers() const
Returns number of dof managers in domain.
DofManager * giveDofManager(int n)
void giveCoupledVelocities(FloatArray &answer, TimeStep *stepN)