SimVascular / svFSIplus

svFSIplus is an open-source, parallel, finite element multi-physics solver.
https://simvascular.github.io/documentation/svfsi.html
Other
9 stars 26 forks source link

Add new svFSI Fortran shell implementation #69

Closed ktbolt closed 10 months ago

ktbolt commented 1 year ago

The svFSI Fortran code has been updated with a new shell mechanics formulation. This new shell code needs to be converted and added to svFSIplus.

The changes are quite extensive as shown below identifying the commits that I think have to do with the new shell code

ktbolt commented 1 year ago

I've added the following functions for the core shell implementation to shells.cpp, mat_fun.cpp and mat_models.cpp.

construct_shell()
shell_cst()
shell_bend_cst()
shl_strs_res()
get_pk2cc_shli()
get_pk2cc_shlc()
ten_mddot()
ten_asym_prod12()
shell_3d()
ktbolt commented 1 year ago

I've added processing Lee-Sacks material model parameters, updated

Parameters.h
Parameters.cpp
read_files.cpp
set_material_props.h
distribute.cpp
ktbolt commented 1 year ago

I've added the Lee-Sacks material model and XML parameters for it, added a CST_Shell_BC_type parameter and fixed some bugs in the processing of shell equations.

The C++ and Fortran results now match for svFSI-Tests/09-shells/01-plate/svFSI_tri3.inp

ktbolt commented 1 year ago

I've added post processing for shells

add new output groups (e.g., out_CGstrain, out_CGInv1)
modify set eq props
modify set output props
modify write_vtus()
add shl_post()

The C++ and Fortran stress results match for svFSI-Tests/09-shells/02-valve

Screen Shot 2023-06-26 at 3 59 39 PM
ktbolt commented 1 year ago

Test running in parallel, does not work, warning message Failed to converge plane-stress condition.

ktbolt commented 1 year ago

Running using svFSI produces

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR occurred, see below for more explanation
ERROR: Shells with linear triangles should be run sequentially
STOP All processors are forced to stop by a fatal error
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

so I guess this is not supported yet @vvedula22 ?

vvedula22 commented 1 year ago

@ktbolt Yes, we use a patch of triangular elements to compute bending strains required for shell formulation and therefore is not supported for parallel simulation yet. IGA for shells is supported for running in parallel.

ktbolt commented 1 year ago

I've added shell contact, updated XML parameter processing and added construct_contact_pnlty().

Contact results are off, looking into that now.

ktbolt commented 1 year ago

For svFSI-Tests/09-shells/02-valve the Displacement results produce the same maximum (0.256322) but a few nodes in the contact area do differ by around 0.0195 (7%), can't find the source of the difference other than just the accumulation of small differences in intermediate computations.

ktbolt commented 1 year ago

Merged into main.

mrp089 commented 1 year ago

@ktbolt, can you add those tests to our testing framework?