Commit ccae2953 authored by jonathan.froehlich's avatar jonathan.froehlich
Browse files

Merge remote-tracking branch 'origin/feature' into 143-use-optimized-elements

parents 379ec312 90b32d4f
Pipeline #220280 failed with stages
in 6 minutes and 45 seconds
......@@ -2,76 +2,63 @@ stages:
- build
- test
- debug
- benchmark
- deploy
variables:
OS: "ubuntu"
OS_VERSION: "20.04"
IMAGE_NAME_CARDMECH: "cardmech-${CI_COMMIT_SHORT_SHA}-${OS}${OS_VERSION}-${CI_PIPELINE_ID}"
DOCKER_TLS_CERTDIR: "/certs"
include:
- project: 'mpp/mpp'
ref: feature
file: '.mpp-ci-templates.yml'
services:
- docker:dind
variables:
extends: .global-variables
build cardmech:
stage: build
build:
extends: .build_template
variables:
GIT_SUBMODULE_STRATEGY: recursive
image: docker:latest
before_script:
- docker info
- docker login -u $MPP_REGISTRY_USER -p $MPP_REGISTRY_PASS ${MPP_REGISTRY}
script:
- sed s/REGISTRY/${MPP_REGISTRY}\\/${MPP_REGISTRY_REPO_RELEASE}/g docker/cardmech.baseimage >
docker/cardmech_registry.baseimage
- sed s/UBUNTUVERSION/${OS_VERSION}/g docker/cardmech_registry.baseimage >
docker/${IMAGE_NAME_CARDMECH}.baseimage
- docker build
--build-arg UPSTREAM_COMMIT=${UPSTREAM_COMMIT}
--no-cache -t ${MPP_REGISTRY}/${MPP_REGISTRY_REPO_DEV}/${IMAGE_NAME_CARDMECH}
-f docker/${IMAGE_NAME_CARDMECH}.baseimage .
- docker push ${MPP_REGISTRY}/${MPP_REGISTRY_REPO_DEV}/${IMAGE_NAME_CARDMECH}
dependencies: [ ]
tags: [ docker ]
PROJECT_NAME: 'cardmech'
test cardmech 1/2:
stage: test
extends: .test_template
variables:
GIT_STRATEGY: none
image: ${MPP_REGISTRY}/${MPP_REGISTRY_REPO_DEV}/${IMAGE_NAME_CARDMECH}
PROJECT_NAME: 'cardmech'
script:
- cd /mpp/build
- ./cardmech/test/cellmodels/TestElphyModels
- ./cardmech/test/elasticity/TestMaterial
dependencies: [ "build cardmech" ]
tags: [ docker ]
test cardmech 2/2:
stage: test
extends: .test_template
variables:
GIT_STRATEGY: none
image: ${MPP_REGISTRY}/${MPP_REGISTRY_REPO_DEV}/${IMAGE_NAME_CARDMECH}
PROJECT_NAME: 'cardmech'
script:
- cd /mpp/build
- python3 mppyrun.py --mpi_tests=1 --mute=0
dependencies: [ "build cardmech" ]
tags: [ docker ]
debug cardmech:
stage: debug
when: on_failure
#debug cardmech:
# stage: debug
# when: on_failure
# variables:
# GIT_STRATEGY: none
# image: ${MPP_REGISTRY}/${MPP_REGISTRY_REPO_DEV}/${IMAGE_NAME_CARDMECH}
# script:
# - cd /mpp/build
# - ctest
# dependencies: [ "build cardmech" ]
# tags: [ docker ]
ventricle-test:
extends: .benchmark_on_horeka
variables:
GIT_STRATEGY: none
image: ${MPP_REGISTRY}/${MPP_REGISTRY_REPO_DEV}/${IMAGE_NAME_CARDMECH}
CMAKE_ARGS: '-DMPP_BUILD_TYPE=MppRelease'
script:
- cd /mpp/build
- ctest
dependencies: [ "build cardmech" ]
tags: [ docker ]
- salloc -p cpuonly -t 00:10:00 -n 4 mpirun Elphy-M++ BiVentricleTest/start
deploy cardmech:
stage: deploy
......
......@@ -5,16 +5,20 @@ include(mpp/CMakeOptionMacros.txt)
add_compile_options(-Werror=return-type)
set_option(COMPILER_OPTIMIZE -O3)
#set_option(COMPILER_OPTIMIZE -O3)
set_option(SPACE_DIM 3)
set_option(USE_DATAMESH ON)
set_option(MPP_BUILD_TYPE MppRelease)
set_option(MPP_BUILD_TYPE MppDebug)
#set_option(MPP_BUILD_TYPE MppRelease)
set_option(SUPPRESS_WARNINGS OFF)
set_option(AFFINE_LINEAR_TRAFO ON)
set_option(BUILD_TESTS OFF)
set_option(BUILD_CARDIAC_TESTS ON)
set_option(BUILD_IBTLIBRARY OFF)
set_option(BUILD_TUTORIAL OFF)
set_option(BUILD_TUTORIAL_TESTS OFF)
#---------------------------------------------------------------------------------------#
......
# === Electrophysioligcal Models: =================================
# = TenTusscher =
# = =
# === Tension Models: =============================================
# = Land =
# = =
# =================================================================
ElphyModelClass = MElphyModel
ElphyModelName = BeelerReuter
#CellModelName = FitzHughNagumo
#CellModelScheme=LinearImplicit
CellModelScheme=ExponentialIntegrator
ThresholdVForActivation=-40.0
# === Iterative Solvers: ==========================================
# = LS, CG, CGX, CGNE, BiCGStab, BiCGStab2, GMRES, MINRES, TestDG =
# = =
# === Direct Solvers: =============================================
# = SuperLU, SuperLU_local, LIB_PS, PS =
# = =
# === Preconditioners: ============================================
# = Jacobi, PointBlockJacobi, PointBlockJacobi_dG, DampedJacobi, =
# = GaussSeidel, PointBlockGaussSeidel, SSOR, SGS, UMF =
# =================================================================
EulerReAssemble = 0;
SetSolution = 0;
# === Linear Solver === #
LinearSolver = gmres;
LinearEpsilon = 1e-8;
LinearReduction = 1e-8;
LinearReduction = 1e-11;
LinearSteps = 10000;
BasePreconditioner = GaussSeidel;
Preconditioner = GaussSeidel;
Preconditioner = LIB_PS;
# =================================================================
# === Gating Solver ===============================================
GatingSolver = gmres;
GatingPreconditioner = GaussSeidel;
GatingEpsilon = 1e-8;
GatingReduction = 1e-12;
# === Elphy Solver ================================================
ElphySolver = gmres;
ElphyPreconditioner =Jacobi# WICHTIG: Mit SuperLU funktioniert die Parallelisierung nicht richtig!;
#ElphyPreconditioner LIB_PS;
ElphyEpsilon = 1e-8;
ElphyReduction = 1e-12;
# === Stretch Solver ==============================================
StretchSolver = gmres;
StretchPreconditioner = GaussSeidel;
StretchEpsilon = 1e-8;
StretchReduction = 1e-12;
# === Mechanics Solver ============================================
MechSolver = gmres
MechPreconditioner = GaussSeidel;
MechEpsilon = 1e-8;
MechReduction = 1e-12;
MechSteps = 10000;
# === Newton Method === #
NewtonEpsilon = 1e-6;
NewtonReduction = 1e-12;
NewtonSteps = 30;
NewtonLineSearchSteps = 5;
NewtonLinearizationReduction = 1e-12;
Smoother = GaussSeidel;
#Smoother = SuperLU;
#SmootherDamp = 0.8;
presmoothing = 3;
postsmoothing = 3;
Overlap = NoOverlap
Overlap_Distribution = 0
DebugLevel = 0;
TimeLevel = 0;
#gnuplot = 1;
precision = 10;
\ No newline at end of file
# = Removes all files in the data folder upon start ======
ClearData = True
# ========================================================
# = Location of .geo files ===============================
GeoPath = ../geo/
# ========================================================
# = Parallelization for cardiac meshes need (plevel = 0) =
plevel = 0
# ========================================================
# ======================================
# = Choose Configuration for Problems =
# ======================================
# === Electrophysiology ================
loadconf = BiVentricleTest/test.conf
# ======================================
# = Default Solver Configuration Files =
loadconf = BiVentricleTest/solvers.conf;
loadconf = BiVentricleTest/cellmodels.conf
loadconf = BiVentricleTest/verbose.conf
# ======================================
ClearData = 1 # Removes existing plots from data folder.
Distribution=RCB
Model = Monodomain;
ElphyModel = SemiImplicit
ElphyProblem =BiVentricleProblem
# Spielt für diesen Test keine Rolle, nur beim Splitting (Iext splitted in PDE =1, Iext in ODE =0)
IextInPDE=1
ReassembleRHSonce=1
OrderStaggeredScheme=wcV
ExternalCurrentSmoothingInTime = Arctan;
#Glättung Anregung im Raum: discrete, linear
ExternalCurrentSmoothingInSpace =linear;
######################
# Meshes #
######################
ElphyPolynomialDegree = 1
StartTime = 0.0
EndTime=0.1
DeltaTime = 0.0001
DeltaTimeMin = 0.00001
DeltaTimeMax = 0.001
######################
# Elphy Parameters #
#####################
ElphyLevel = 0
ElphySubsteps = 1
ElphyMeshPart = ventriclesonly;
# Monodomain Parameters
SurfaceToVolumeRatio= 140;.
MembraneCapacitance=0.01;
IntraLongitudinal = 0.170;
ExtraLongitudinal = 0.620;
IntraTransversal = 0.019;
ExtraTransversal = 0.240;
CrankNicolsonTheta = 0.5
# Gerade nicht implementiert:
#can be set to ExplicitEuler, AdamsBashforth (second order)
#NumericalMethodForElphy=AdamsBashforth;
ElphyIntegrator=ExplicitEuler;
######################
# Plotting #
######################
PlotStress = 0
PlotVertexPotential = 1
#PlotCellPotential = 1
PrintVSteps =1
# vtk Dateien werden erstellt
PlotVTK = 0
PlottingSteps = 10000
TimeSeries = uniformabaqus;
EulerReAssemble = 0;
ConfigVerbose = 1
MeshVerbose = 2
AssembleVerbose = 1
# = Solver Verbose =
MultigridVerbose = 0
BaseSolverVerbose = -1
LinearVerbose = -5
NewtonVerbose = 1
EulerVerbose = 0
LinearImplicitVerbose = 5
ElphyLinearSolverVerbose =-1
MonodomainVerbose =1
NonLinearVerbose = -5
ElphySolverVerbose = 1
CoupledSolverVerbose = 2
CellModelVerbose = 10
# = Main Verbose =
ElphyVerbose = 1
MechVerbose = 1
# = Plot Verbose =
ElphySolverVTK = 1
CoupledSolverVTK = 1
PrestressPlotVerbose = 0
PressurePlotVerbose = 1
DynamicPlotVerbose = 1
PlotVTK = 1
......@@ -52,8 +52,8 @@ MechReduction = 1e-12;
MechSteps = 10000;
# === Newton Method === #
NewtonEpsilon = 1e-3;
NewtonReduction = 1e-10;
NewtonEpsilon = 1e-6;
NewtonReduction = 1e-12;
NewtonSteps = 30;
NewtonLineSearchSteps = 5;
NewtonLinearizationReduction = 1e-12;
......
......@@ -10,9 +10,11 @@ ElphyModelClass = MElphyModel
ElphyModelName = BeelerReuter
#CellModelName = FitzHughNagumo
#CellModelScheme=LinearImplicit
CellModelScheme=RungeKutta2
#CellModelScheme=ExplicitEuler
#CellModelScheme=RungeKutta2
CellModelScheme = ExponentialIntegrator
ThresholdVForActivation=-40.0
TensionModel = IBT;
ElphyModel = TenTusscher2;
......
......@@ -9,10 +9,10 @@ h_min=1e-6
Model = ActiveStrainElasticity
MechModel = Static
MechDiscretization = Conforming
MechDiscretization = DG
CalculateReference = 1
ReferenceLevel = 4
CalculateReference = 0
ReferenceLevel = 2
InterpolateStartVector = false
MechProblem = LeftVentricle
......@@ -58,7 +58,7 @@ StretchFactorNormal = 4.0
######################
#ActiveMaterial = Linear
#ActiveMaterial = NeoHooke
#ActiveMaterial = Bonet
ActiveMaterial = Bonet
ActiveMaterial = Holzapfel
Density = 0.00
......@@ -77,8 +77,8 @@ PermeabilityPenalty = 20
#------------------------
# Linear Material
#------------------------
LinearMat_Lambda = 20
LinearMat_Mu = 10
LinearMat_Lambda = 0.6
LinearMat_Mu = 0.3
#------------------------
# NeoHooke Material
......@@ -89,10 +89,11 @@ NeoHooke_Mu = 10
#------------------------
# Guccione Material
#------------------------
GuccioneMat_C=10
GuccioneMat_bf=1
GuccioneMat_bs=1
GuccioneMat_bfs=1
GuccioneMat_C=0.313
GuccioneMat_bf=17.8
GuccioneMat_bs=7.1
GuccioneMat_bfs=12.4
#------------------------
......@@ -112,7 +113,7 @@ HolzapfelMat_bfs = 10
# Pressure Parameters#
######################
#ConstantPressure = -10
LVPressure = 10
LVPressure = 0.5 # 10
RVPressure = 0
RAPressure = 0
LAPressure = 0
......@@ -162,6 +163,9 @@ presmoothing = 3;
postsmoothing = 3;
DGSign=-1.0
DGPenalty= 25.0
Overlap = dG1
Overlap = NoOverlap
Overlap_Distribution = 0
......@@ -198,15 +202,15 @@ ElphyVerbose = -1
MechVerbose = -1
# = Plot Verbose =
PlotVTK = 0
PlotVTK = 1
PlottingSteps = 1
ElphySolverVTK = -1
PressureSolverVTK = -1
PressureSolverVTK = 1
DynamicSolverVTK = -1
CoupledSolverVTK = -1
PrestressPlotVerbose = 0
PressurePlotVerbose = -1
PressurePlotVerbose = 1
DynamicPlotVerbose = -1
......@@ -2,26 +2,29 @@ ClearData = 1 # Removes existing plots from data folder.
#Distribution =Stripes
Distribution = RCB
PrintMeshOnly =0;
#Model: OneCell
Model = Monodomain;
#ElphyModel = Diffusion
#ElphyModel = Splitting
#ElphyModel = ImplictEuler
#ElphyModel = SemiImplicit
ElphyModel = SemiImplicit
#ElphyModel = SemiImplicitNodes
ElphyModel = LinearImplicit
ElphyModel = LinearImplicitNodes
#ElphyModel = LinearImplicitQuadrature
OrderStaggeredScheme=wVc
OrderStaggeredScheme=wcV
ReassembleRHSonce=1
ElphySplittingMethod = Strang
ElphySplittingMethod =Godunov #Strang, Stein,Godunov
#ElphyProblem: VariableMeshProblem,TetraTestProblem,HexaTestProblem, HexaFineTestProblem, HexaLinExTestProblem, OneCellProblem,Hexa2dTestProblem,WithoutDiffusion,EigenvalueProblem, EllipsoidProblem,FullHeartProblem
#ElphyProblem=FullHeartProblem
#ElphyProblem =FullHeartProblem
#ElphyProblem=TetraTestProblem
#ElphyProblem=EllipsoidProblem
ElphyProblem=BiVentricleProblem
ElphyProblem=EllipsoidProblem
#ElphyProblem =HexaTestProblem
#ElphyProblem=Hexa2dTestProblem
......@@ -40,6 +43,10 @@ ExternalCurrentSmoothingInSpace =linear;
######################
# Meshes #
######################
Mesh=TestEllipsoid3dExcitation
Mesh=EllipsoidExcitationApex
Mesh=ChamberDebug2DQuad
Mesh=ChamberCube0252DQuad
Mesh = BenchmarkBeam3DTet
Mesh = RossiBlockSmall3DTet
#Mesh=KovachevaHeart
......@@ -48,24 +55,27 @@ Mesh=SmallTestCube053DQuad
Mesh=TestChamberCube05WithActivation2DQuad
#Mesh=ChamberCube052DQuad
ElphyLevel = 0
ElphyPolynomialDegree = 1
#HexaQuadExactupTo =6
StartTime = 0.0
EndTime=0.0001
EndTime = 0.4
#EndTime = 0.02
#DeltaTime=0.000003125
DeltaTime = 0.0001
DeltaTimeMin = 0.00001
DeltaTimeMax = 0.001
######################
# Elphy Parameters #
#####################
ElphyLevel = 0
ElphySubsteps = 1
#ElphyMeshPart = ventriclesonly;
ElphyMeshPart = ventriclesonly;
#ElphyMeshPart = atriaonly;
ElphyMeshPart = fourchamber;
......@@ -98,7 +108,7 @@ PlotVertexPotential = 1
PrintVSteps =1
# vtk Dateien werden erstellt
PlotVTK = 1
PlottingSteps = 50
PlottingSteps = 10
TimeSeries = uniformabaqus;
......
......@@ -11,13 +11,13 @@ GeoPath = ../geo/
# = Choose Configuration for Problems =
# ======================================
# === Electrophysiology ================
#loadconf = elphy.conf
loadconf = elphy.conf
#loadconf = monodomain.conf;
# === Cardiac Mechanics ================
#loadconf = coupled.conf
#loadconf = klotz.conf
#loadconf = elasticity_benchmarks/test.conf
loadconf = elasticity_benchmarks/linear.conf
#loadconf = elasticity_benchmarks/linear.conf
#loadconf = elasticity_benchmarks/beam.conf
#loadconf = elasticity_benchmarks/ellipsoid.conf
#loadconf = elasticity.conf
......
......@@ -34,7 +34,7 @@ GatingReduction = 1e-12;
# === Elphy Solver ================================================
ElphySolver = gmres;
#ElphyPreconditioner =GaussSeidel# WICHTIG: Mit SuperLU funktioniert die Parallelisierung nicht richtig!;
ElphyPreconditioner LIB_PS;
ElphyPreconditioner=Jacobi;
ElphyEpsilon = 1e-8;
ElphyReduction = 1e-12;
......@@ -52,7 +52,7 @@ MechReduction = 1e-12
MechSteps = 20000
# === Newton Method === #
NewtonEpsilon = 1e-3
NewtonEpsilon = 1e-6
NewtonReduction = 1e-12;
NewtonSteps = 300
NewtonLineSearchSteps = 10;
......
ConfigVerbose = 1
MeshVerbose = 2
AssembleVerbose = 2
AssembleVerbose = 1
# = Solver Verbose =
MultigridVerbose = 0
......@@ -8,28 +8,23 @@ BaseSolverVerbose = -1
LinearVerbose = -5
NewtonVerbose = 1
EulerVerbose = 0
LinearImplicitVerbose = -5
MonodomainVerbose =-1
NonLinearVerbose = -5
ElphySolverVerbose = -1
MechVerbose = -1
LinearImplicitVerbose = 5
ElphyLinearSolverVerbose =-1
PressureSolverVerbose = -3
DynamicSolverVerbose = -3
CoupledSolverVerbose = 5
CellModelVerbose = 5 #10
MonodomainVerbose =1
NonLinearVerbose = -5
ElphySolverVerbose = 1
CoupledSolverVerbose = 2
CellModelVerbose = 10
# = Main Verbose =
ElphyVerbose = 1
MainMechVerbose = 2
MechVerbose = 1
# = Plot Verbose =
ElphySolverVTK = -1
PressureSolverVTK = 1
DynamicSolverVTK = 1
ElphySolverVTK = 1
CoupledSolverVTK = 1
PrestressPlotVerbose = -1
PrestressPlotVerbose = 0
PressurePlotVerbose = 1
DynamicPlotVerbose = 1