Open aabrown100-git opened 1 week ago
@aabrown100-git Does it make sense to create a Viscosity
class that can be used for both fluids and solids?
Copying the discussion from https://github.com/SimVascular/svFSIplus/pull/270
From @ktbolt
"
The thing to do is to internally have separate solid and fluid viscosity parameters and a single Viscosity
parameter in the user interface defined by context.
For example: A fluid domain
<Domain id="0" >
<Equation> fluid </Equation>
<Density> 100.0 </Density>
<Viscosity model="Constant"> <Value> 10.0 </Value> </Viscosity>
<Backflow_stabilization_coefficient> 0.3 </Backflow_stabilization_coefficient>
</Domain>
and a solid domain
<Domain id="1" >
<Equation> struct </Equation>
<Constitutive_model type="stVK"> </Constitutive_model>
<Density> 100.0 </Density>
<Viscosity> 1.0 </Viscosity>
<Elasticity_modulus> 5.6e7 </Elasticity_modulus>
<Poisson_ratio> 0.4 </Poisson_ratio>
</Domain>
These can be processed in DomainParameters::set_values()
using the Equation
parameter for context.
It would be better of course to have a Viscosity
class that dealt with both fluid and solid viscosity models.
"
Problem
Currently, the code only has a Newtonian solid viscosity implemented. In this model, the viscous deviatoric Cauchy stress is given by
$\sigma_{vis}^{dev} = 2 \mu \mathbf{d}^{dev}$,
where
$\mathbf{d}^{dev} = \frac{1}{2} (\nabla{x} \mathbf{v} + \nabla{x} \mathbf{v}^T) - \frac{1}{3} \nabla \cdot \mathbf{v} \mathbf{I}$
or in terms of the 2nd Piola-Kirchhoff stress
$\mathbf{S}_{vis} = 2 \mu J \mathbf{F}^{-1} \mathbf{d}^{dev} \mathbf{F}{-T}$
A recent cardiac mechanics benchmark problem calls for a viscous pseudo-potential model for solid viscosity.
$\Psi_{vis} = \frac{\mu}{2} \text{tr}\dot{\mathbf{E}}^2$,
$S{vis}= \frac{\partial \Psi{vis}}{\partial \dot{\mathbf{E}}} = \mu \dot{\mathbf{E}}$
We should implement this new solid viscosity model.
Solution
This has been already been done in svFSI (https://github.com/vvedula22/svFSI). So we just need to translate the relevant parts of this code.
I have a functional draft of this feature here
Additional context
This is related to https://github.com/SimVascular/svFSIplus/issues/269. I want to first fix this issue, so that existing struct, ustruct, and FSI test cases are run with zero viscosity.
Code of Conduct