6161 folder = geodir ,
6262)
6363# Scale the geometry to meters and adjust the size so that LV and RV volumes are reasonable
64- geo .mesh .geometry .x [:] *= 1.5e-2
65-
66- # Now we need to redefine the markers to have so that facets on the endo- and epicardium combine both
67- # free wall and the septum.
68-
69- markers = {"ENDO_LV" : [1 , 2 ], "ENDO_RV" : [2 , 2 ], "BASE" : [3 , 2 ], "EPI" : [4 , 2 ]}
70- marker_values = geo .ffun .values .copy ()
71- marker_values [
72- np .isin (geo .ffun .indices , geo .ffun .find (geo .markers ["LV_ENDO_FW" ][0 ]))
73- ] = markers ["ENDO_LV" ][0 ]
74- marker_values [np .isin (geo .ffun .indices , geo .ffun .find (geo .markers ["LV_SEPTUM" ][0 ]))] = (
75- markers ["ENDO_LV" ][0 ]
76- )
77- marker_values [
78- np .isin (geo .ffun .indices , geo .ffun .find (geo .markers ["RV_ENDO_FW" ][0 ]))
79- ] = markers ["ENDO_RV" ][0 ]
80- marker_values [np .isin (geo .ffun .indices , geo .ffun .find (geo .markers ["RV_SEPTUM" ][0 ]))] = (
81- markers ["ENDO_RV" ][0 ]
82- )
83- marker_values [np .isin (geo .ffun .indices , geo .ffun .find (geo .markers ["BASE" ][0 ]))] = (
84- markers ["BASE" ][0 ]
85- )
86- marker_values [np .isin (geo .ffun .indices , geo .ffun .find (geo .markers ["LV_EPI_FW" ][0 ]))] = (
87- markers ["EPI" ][0 ]
88- )
89- marker_values [np .isin (geo .ffun .indices , geo .ffun .find (geo .markers ["RV_EPI_FW" ][0 ]))] = (
90- markers ["EPI" ][0 ]
91- )
64+ geo .mesh .geometry .x [:] *= 1.6e-2
9265
93- geo .markers = markers
94- ffun = dolfinx .mesh .meshtags (
95- geo .mesh ,
96- geo .ffun .dim ,
97- geo .ffun .indices ,
98- marker_values ,
99- )
100- geo .ffun = ffun
10166
10267geometry = pulse .HeartGeometry .from_cardiac_geometries (
10368 geo , metadata = {"quadrature_degree" : 6 },
13196)
13297
13398alpha_epi = pulse .Variable (
134- dolfinx .fem .Constant (geometry .mesh , dolfinx .default_scalar_type (1e8 )),
99+ dolfinx .fem .Constant (geometry .mesh , dolfinx .default_scalar_type (1e6 )),
135100 "Pa / m" ,
136101)
137102robin_epi = pulse .RobinBC (value = alpha_epi , marker = geometry .markers ["EPI" ][0 ])
142107robin_base = pulse .RobinBC (value = alpha_base , marker = geometry .markers ["BASE" ][0 ])
143108
144109
145- lvv_initial = geo .mesh .comm .allreduce (geometry .volume ("ENDO_LV " ), op = MPI .SUM )
110+ lvv_initial = geo .mesh .comm .allreduce (geometry .volume ("LV " ), op = MPI .SUM )
146111lv_volume = dolfinx .fem .Constant (
147112 geometry .mesh , dolfinx .default_scalar_type (lvv_initial ),
148113)
149- lv_cavity = pulse .problem .Cavity (marker = "ENDO_LV " , volume = lv_volume )
114+ lv_cavity = pulse .problem .Cavity (marker = "LV " , volume = lv_volume )
150115
151- rvv_initial = geo .mesh .comm .allreduce (geometry .volume ("ENDO_RV " ), op = MPI .SUM )
116+ rvv_initial = geo .mesh .comm .allreduce (geometry .volume ("RV " ), op = MPI .SUM )
152117rv_volume = dolfinx .fem .Constant (
153118 geometry .mesh , dolfinx .default_scalar_type (rvv_initial ),
154119)
155- rv_cavity = pulse .problem .Cavity (marker = "ENDO_RV " , volume = rv_volume )
120+ rv_cavity = pulse .problem .Cavity (marker = "RV " , volume = rv_volume )
156121
157122
158123cavities = [lv_cavity , rv_cavity ]
@@ -284,7 +249,7 @@ def get_activation(t: float):
284249
285250def callback (model , i : int , t : float , save = True ):
286251 Ta_history .append (get_activation (t ))
287- if save and i % 100 == 0 :
252+ if save and i % 10 == 0 :
288253 io4dolfinx .write_function (filename , problem .u , time = t , name = "displacement" )
289254 vtx .write (t )
290255
@@ -363,19 +328,18 @@ def p_BiV_func(V_LV, V_RV, t):
363328mL = circulation .units .ureg ("mL" )
364329add_units = False
365330lvv_init = (
366- geo .mesh .comm .allreduce (geometry .volume ("ENDO_LV " , u = problem .u ), op = MPI .SUM )
331+ geo .mesh .comm .allreduce (geometry .volume ("LV " , u = problem .u ), op = MPI .SUM )
367332 * 1e6
368333 * 1.0
369334) # Increase the volume by 5%
370335rvv_init = (
371- geo .mesh .comm .allreduce (geometry .volume ("ENDO_RV " , u = problem .u ), op = MPI .SUM )
336+ geo .mesh .comm .allreduce (geometry .volume ("RV " , u = problem .u ), op = MPI .SUM )
372337 * 1e6
373338 * 1.0
374339) # Increase the volume by 5%
375340logger .info (f"Initial volume (LV): { lvv_init } mL and (RV): { rvv_init } mL" )
376341init_state = {"V_LV" : lvv_initial * 1e6 * mL , "V_RV" : rvv_initial * 1e6 * mL }
377342
378-
379343circulation_model_3D = circulation .regazzoni2020 .Regazzoni2020 (
380344 add_units = add_units ,
381345 callback = callback ,
@@ -385,6 +349,7 @@ def p_BiV_func(V_LV, V_RV, t):
385349 outdir = outdir ,
386350 initial_state = init_state ,
387351)
352+ # exit()
388353# Set end time for early stopping if running in CI
389354end_time = 2 * dt if os .getenv ("CI" ) else None
390355circulation_model_3D .solve (
0 commit comments