Topic: Some things that I have come across when doing multiscale analysis.

1. I call solveYourselfAt(tStep) several times for every timestep (since the macroscale is iterating).
Naturally, "this->updateYourself(tStep);" cannot be called in the end of solveYourselfAt(tStep), since it's not necessarily done.
In order to fit together with everything else in OOFEM (Say for example that i want to run some analysis on the microscale alone), i prupose that this->updateYourself(tStep) is moved to solveYourself(); (just as terminate(tStep))

I could see other cases (such as exotic boundary condition that require iterating) where this would also be required, and I can't find any good reason why it should be called in solveYourselfAt.

For the last two, I'm certain they are just bugs;

2. A critical bug that i discovered is that the first time giveRealStress/givePlaneStressStiffMtrx is called, the time increment is 0. I looked into this, and I believe that NonLinearStatic :: updateAttributes(TimeStep *atTime) should not only update deltaT (first time this is ever read), but also set the current time step to use this increment.
Either that, or "initializeFrom" should read deltaT, since it's actually done before the timestep is created.

3. EngngModel :: giveNumberOfPrescribedEquations will return the free equations if the equations are not numbered.

2

Re: Some things that I have come across when doing multiscale analysis.

Dear Mikael,

1. I would propose to move the call of this->updateYourself(tStep) into the terminate method. ok?
2. The problem is that updateAttributes() method (called via initMetaStepAttributes) is called after giveNextStep() (see EngngModel:: solveYourself(). As I rather want to generate TimeStep with correct data than to fix them later, I would think about calling first  initMetaStepAttributes (which will set right deltaT), followed by creation of new TimeStep in giveNextStep() method. However, this could not be done simply, as initMetaStepAttributes requires the timeStep. I will think about changing initMetaStepAttributes parameter from "TimeStep*" to "int metaStepNumber" (which should be sufficient).
3. Yes this is a bug. Fixed.

Borek

Re: Some things that I have come across when doing multiscale analysis.

1. Yes, that would solve my issue in a clean way.

2. I haven't looked into this very deeply, and I haven't had to use meta steps, but what you suggest seems like a sound sensible.