Skip to content

Commit

Permalink
Merge pull request #98 from finsberg/fix-97
Browse files Browse the repository at this point in the history
Use correct parameter in benchmark problems
  • Loading branch information
finsberg committed Apr 3, 2024
2 parents 6ff3fd5 + 0a71c79 commit 42f4b8d
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 30 deletions.
26 changes: 10 additions & 16 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,16 @@ jobs:
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
container:
[
"ghcr.io/scientificcomputing/fenics-gmsh:2023-08-16",
"finsberg/pyadjoint-extra",
]

container:
image: ${{ matrix.container }}
image: "ghcr.io/scientificcomputing/fenics-gmsh:2024-02-19"

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Cache
id: cache-primes
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
~/.cache/instant
Expand All @@ -40,9 +33,10 @@ jobs:
- name: Test with pytest
uses: nick-invision/retry@v2
with:
timeout_minutes: 120
max_attempts: 5
retry_on: error
command: python3 -m pytest
run: python3 -m pytest

- name: Install dolfin-adjoint
run: python3 -m pip install dolfin-adjoint

- name: Test with pyadjoint
run: python3 -m pytest
22 changes: 14 additions & 8 deletions demo/benchmark/problem2.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,24 @@
from dolfin import DirichletBC, Constant, interpolate, Mesh

import pulse
import cardiac_geometries as cg
from fenics_plotly import plot

here = Path(__file__).absolute().parent


geometry = pulse.HeartGeometry.from_file(pulse.mesh_paths["benchmark"])
# geometry = pulse.geometries.benchmark_ellipsoid_geometry()

geo_path = Path("geometry")
if not geo_path.is_dir():
cg.create_benchmark_geometry_land15(outdir=geo_path)
geo = cg.geometry.Geometry.from_folder(geo_path)
geometry = pulse.HeartGeometry(
mesh=geo.mesh,
markers=geo.markers,
marker_functions=pulse.MarkerFunctions(vfun=geo.vfun, ffun=geo.ffun),
microstructure=pulse.Microstructure(f0=geo.f0, s0=geo.s0, n0=geo.n0),
)

# Create the material
material_parameters = pulse.Guccione.default_parameters()
material_parameters["CC"] = 10.0
material_parameters["C"] = 10.0
material_parameters["bf"] = 1.0
material_parameters["bfs"] = 1.0
material_parameters["bt"] = 1.0
Expand Down Expand Up @@ -63,7 +69,7 @@ def dirichlet_bc(W):
# Get displacement and hydrostatic pressure
u, p = problem.state.split(deepcopy=True)

endo_apex_marker = geometry.markers["APEX_ENDO"][0]
endo_apex_marker = geometry.markers["ENDOPT"][0]
endo_apex_idx = geometry.vfun.array().tolist().index(endo_apex_marker)
endo_apex = geometry.mesh.coordinates()[endo_apex_idx, :]
endo_apex_pos = endo_apex + u(endo_apex)
Expand All @@ -75,7 +81,7 @@ def dirichlet_bc(W):
)


epi_apex_marker = geometry.markers["APEX_EPI"][0]
epi_apex_marker = geometry.markers["EPIPT"][0]
epi_apex_idx = geometry.vfun.array().tolist().index(epi_apex_marker)
epi_apex = geometry.mesh.coordinates()[epi_apex_idx, :]
epi_apex_pos = epi_apex + u(epi_apex)
Expand Down
24 changes: 18 additions & 6 deletions demo/benchmark/problem3.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# benchmark problems and solutions for testing active and passive material
# behaviour. Proc. R. Soc. A. 2015 Dec 8;471(2184):20150641.
#

from pathlib import Path
import dolfin

try:
Expand All @@ -15,14 +15,25 @@
from dolfin import DirichletBC, Constant, interpolate, Mesh

import pulse
import cardiac_geometries as cg
from fenics_plotly import plot

geometry = pulse.HeartGeometry.from_file(pulse.mesh_paths["benchmark"])
# geometry = pulse.geometries.benchmark_ellipsoid_geometry()

geo_path = Path("geometry")
if not geo_path.is_dir():
cg.create_benchmark_geometry_land15(outdir=geo_path)
geo = cg.geometry.Geometry.from_folder(geo_path)
geometry = pulse.HeartGeometry(
mesh=geo.mesh,
markers=geo.markers,
marker_functions=pulse.MarkerFunctions(vfun=geo.vfun, ffun=geo.ffun),
microstructure=pulse.Microstructure(f0=geo.f0, s0=geo.s0, n0=geo.n0),
)


# Create the material
material_parameters = pulse.Guccione.default_parameters()
material_parameters["CC"] = 2.0
material_parameters["C"] = 2.0
material_parameters["bf"] = 8.0
material_parameters["bfs"] = 4.0
material_parameters["bt"] = 2.0
Expand Down Expand Up @@ -56,6 +67,7 @@ def dirichlet_bc(W):
# Create problem
problem = pulse.MechanicsProblem(geometry, material, bcs)


# Solve problem
pulse.iterate.iterate(problem, lvp, 15.0, initial_number_of_steps=50)
pulse.iterate.iterate(problem, activation, 60.0, initial_number_of_steps=50)
Expand All @@ -64,7 +76,7 @@ def dirichlet_bc(W):
u, p = problem.state.split(deepcopy=True)


endo_apex_marker = geometry.markers["APEX_ENDO"][0]
endo_apex_marker = geometry.markers["ENDOPT"][0]
endo_apex_idx = geometry.vfun.array().tolist().index(endo_apex_marker)
endo_apex = geometry.mesh.coordinates()[endo_apex_idx, :]
endo_apex_pos = endo_apex + u(endo_apex)
Expand All @@ -76,7 +88,7 @@ def dirichlet_bc(W):
)


epi_apex_marker = geometry.markers["APEX_EPI"][0]
epi_apex_marker = geometry.markers["EPIPT"][0]
epi_apex_idx = geometry.vfun.array().tolist().index(epi_apex_marker)
epi_apex = geometry.mesh.coordinates()[epi_apex_idx, :]
epi_apex_pos = epi_apex + u(epi_apex)
Expand Down
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ test = [
"fenics-plotly",
"pytest-cov",
"pytest-env",
"cardiac-geometries>=1.1.2"
]
all = [
"fenics-pulse[test]",
Expand Down

0 comments on commit 42f4b8d

Please sign in to comment.