Skip to content

Fiber stretch rate always evaluated to zero for active stress coupling #639

Description

@michelebucelli

Problem

For electromechanics simulations, the fiber stretch rate is currently computed in Integrator::predictor by evaluating the fiber stretch with solutions.current.get_displacement() and with the displacement solutions.old.get_displacement(), and then taking the difference divided by the time step.

However, at the moment when this is evaluated, the current and old solution store the same thing. The predictor call comes at the beginning of the while (true) loop in the iterate_solution function from main.cpp, and at at the end of the same loop there's a Do = Dn statement to prepare for the next time step.

As a consequence of this, the two fiber stretches will be equal, and the stretch rate will be evaluated to zero.

Possible solutions

Due to other problems taking priority, I haven't thought too deeply about how this can be solved cleanly. Some possible fixes:

  1. change the order in which things are evaluated, to make sure that fiber stretch is computed before Do = Dn;
  2. store a separate old displacement array;
  3. store a fiber stretch array somewhere, and reuse that in the computation of stretch rate (also suggested in Fiber stretch and stretch rate shouldn't be computed for active stress models that do not require them #604).

I don't particularly like any of these on their own, and I think it would be better to take this chance to rethink and clarify a bit the way explicitly coupled models (such as the ionic model or the active contraction model) interact with the PIC scheme.

I'll get back to this once I have an electromechanics simulation setup that works properly without this feedback.

Additional context

  1. The fiber stretch rate still shows up different from zero in the VTU output, because write_vtus is called in iterate_solution before Do = Dn, that is before the old solution is made equal to the current.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions