SimVascular / svFSI

A multi-physics finite element solver for patient-specific blood flow simulation including fluid-structure interaction and cardiac electrophysiology
Other
27 stars 48 forks source link

Add equilibrated constrained mixture model #32

Open mrp089 opened 3 years ago

mrp089 commented 3 years ago

The model is defined here:

https://doi.org/10.1002/zamm.201700302 https://doi.org/10.1371/journal.pcbi.1008273

I will adapt Marcos's FEBio implementation to svFSI.

mrp089 commented 3 years ago

@vvedula22 Is there a way to pass the current time and spatial position in MATMODELS.f to my material evaluation?

vvedula22 commented 3 years ago

Try using this code as an example for passing the location of the integration point to MATMODELS.f. You can backtrace to see how the integration point is evaluated and passed to the stress subroutine. The global variable time is accessible through the module COMMOD which is already included in these subroutines.

mrp089 commented 3 years ago

Thanks, @vvedula22!

mrp089 commented 3 years ago

I need two different fiber orientations that are defined on the mesh.

I found an example to define a constant fiber direction, e.g. in https://github.com/SimVascular/svFSI-Tests/blob/master/05-struct/02-LV-Guccione-passive/Q1_svFSI.inp:

Add mesh: msh {
   [...]
   Fiber direction: (1.0, 0.0, 0.0)
   Fiber direction: (0.0, 1.0, 0.0)
}

I also found code to read mesh fibers (defined on each node/element?): https://github.com/SimVascular/svFSI/blob/8f4865a76dd20644f4c8701fd72f88a5c909c865/Code/Source/svFSI/READMSH.f#L334-L380

@vvedula22 Do you have a sample input file that uses spatially varying fiber families?

vvedula22 commented 3 years ago

I need two different fiber orientations that are defined on the mesh.

I found an example to define a constant fiber direction, e.g. in https://github.com/SimVascular/svFSI-Tests/blob/master/05-struct/02-LV-Guccione-passive/Q1_svFSI.inp:

Add mesh: msh {
   [...]
   Fiber direction: (1.0, 0.0, 0.0)
   Fiber direction: (0.0, 1.0, 0.0)
}

I also found code to read mesh fibers (defined on each node/element?): https://github.com/SimVascular/svFSI/blob/8f4865a76dd20644f4c8701fd72f88a5c909c865/Code/Source/svFSI/READMSH.f#L334-L380

@vvedula22 Do you have a sample input file that uses spatially varying fiber families?

@mrp089 You can load fiber directions stored at element level from a vtu file as described here svFSI_master.inp

   #  # Fiber directions may be loaded for some material models. Fiber
   #  # direction must be stored at the element level using the data
   #  # array name, "FIB_DIR", in the vtu format.
   #    Fiber direction file path: ./mesh/fibers_longitudinal.vtu
   #    Fiber direction file path: ./mesh/fibers_sheet.vtu

Note that the fiber directions are loaded within Add msh block in the input file. Here is an example:

https://github.com/SimVascular/svFSI-Tests/blob/master/06-ustruct/03-LV-Guccione-active/svFSI.inp

Add mesh: msh {
   [...]
   Fiber direction file path: mesh/P1/fibersLong.vtu
   Fiber direction file path: mesh/P1/fibersSheet.vtu
}