This post summarizes all developments that made its way into the master branch in the last month.
The headline is that region assignment is now strict: imp_region[0] and gregion[0] no longer catch every unlisted tag, so some existing .par files will now abort at startup.
No new release this month: v20.0 is still current, and everything below lives on master, so you
only get it with a fresh build from source (and an updated carputils).
imp_region[0] and gregion[0] are now ordinary regions,
and their ID lists count. With more than one region, startup aborts if an element tag is in no
region, is in more than one, or if an ID list is shorter than its num_IDs. Unlisted tags used
to fall into region 0 silently. In EMI, gregion[0] and gregion[1] must not have ID lists. What
to do: list every tag of your mesh explicitly, including those you relied on region 0 to pick up.
If a run aborts here, the old layout was probably assigning tags you did not intend. (!545, #529)phie_rec_gbath (default 1 S/m). Recovered
extracellular potentials (phie_rec_ptf) used to take the conductivity from
gregion[0].g_bath × gregion[0].g_mult. What to do: if you set either of those together with
phie_rec_ptf, set phie_rec_gbath to the same product, or your ECG amplitudes will change. (!535, #527)dream.depol_time_thresh, default -35 mV), a stimulus with
pulse.strength 0 captures nothing, activation times can come earlier than before, and the ionic
model no longer skips steps. act.igb/rpt.igb now hold one frame per eikonal cycle rather than
per spacedt. ptcl.stimlist and operator_splitting 0 are now rejected, and stimulus capture
needs ionic models without a vectorized data layout. What to do: rerun DREAM results you
compare against, regenerate any DREAM checkpoints (old eikonal state files are rejected), and
check post-processing that assumes a frame count in act/rpt or reads the maxAT column of
eik_stats.dat (now maxAD). (!464, #397, #401, #402).pts/.bpts files (meshes, phie_rec_ptf) with
unparsable lines or fewer points than declared stop the run. Extra or blank lines after the
declared points no longer produce duplicated points. What to do: if a mesh now fails to load,
fix the point count in the header. (!552, carputils #169)criteria in a Ginkgo
options file now take precedence over cg_tol_*/cg_maxit_*, as with PETSc. The carputils
options files dropped their criteria to match, and older openCARP builds abort on them. Building
the Ginkgo backend now needs Ginkgo 2.0 (currently its develop branch). What to do: update both
repos at once, rebuild Ginkgo from develop, and check any options file of your own for
criteria that would now override your openCARP tolerances. (!557, carputils !145, carputils !150)-device_id N now works on Ginkgo GPUs, and pins every rank to that device. It was ignored
before. What to do: remove -device_id 0 from your Ginkgo GPU jobs (the old build docs showed
it), or all ranks on a node will share one GPU. The default (-1) keeps one device per rank. (!563)ParameterSet turned
Vrest=-81.2 into Vrest-81.2, which LIMPET reads as "subtract 81.2". What to do: rerun any
script that set negative ionic model parameters through carputils; those runs used the wrong
values. (carputils !139, carputils #166)ConductivityRegion dropped
g_mult when g_bath was set, so baths ran unscaled. An unnamed Stimulus (e.g. built from a mesh
block) emitted an empty option that made openCARP swallow the next one. Retagging a region without a
tag set elements to -1. The emi flag of ionic regions is now keyword-only (emi=True). What to
do: rerun affected setups, and change positional emi arguments in your scripts. (carputils !121)igbops -op i_maxX gives, for each time step, the index of the node with the largest value.
For the minimum, multiply the data by -1 first. (commit bacd29d8)ginkgo_exec dpcpp runs on
Intel GPUs. (!557, #546, !563)Singularity.def is now generated
and kept in sync with the Docker recipe, and the docs explain multi-node Slurm runs with Apptainer. (!553, !555, #550)dream.output.detailed_debugNode logs everything the eikonal solver
did to one node: activations, candidates and why they were rejected. DREAM checkpoints written
with chkpt_intv can now be restarted from, and restarts resume the wavefront properly. (!464, #399)RING_DISTANCE: surface in the PEERP config
file. The ring then no longer depends on how the surface curves. The default (euclidean) is
unchanged. (carputils !144)carpio.igb.IGBFile.write(..., traces_by_time=True) takes
the array exactly as read() returns it. (carputils !121, carputils #157)gvec output for plugin state variables was garbage. It read the base ionic model's memory
instead of the plugin's. (!538, #540)renumbering=1, eikonal and DREAM wrote activation and repolarization times to the wrong
nodes and applied imp_region DREAM parameters to the wrong nodes. On Ginkgo, the same setting
could produce NaN or misplaced values. (!559, #553, !551, #548)-ginkgo_exec omp, and on several ranks could drop vector entries
when moving data between layouts. Several Ginkgo crashes now stop with a readable error, and matrix
dumps hold the real matrices. (!557, !563)+ could crash at startup. (!539, #524)bench --load-module failed with release builds on macOS. (!560, #554)cxil_map: write error) with a
CUDA-enabled PETSc. (!561)igbextract), on large capture rings
(argument too long), and on mesh paths containing a hyphen. It also exited with code 1 on success. (carputils !141)vec3f/vec9f IGB files with values from the wrong nodes, read .lon files
with fibre and sheet columns shifted, and could not read .vec.gz files. (carputils !121)tuneCV reports gm as NaN with bidm_eqv_mono=0 instead of a meaningless value, and
tissue_calibrate.py now passes --build on to tuneCV. (carputils !132, carputils !146, carputils #170)All of these need an updated build or carputils install.
8 changes to CI, build, test and docs. Two worth knowing: if you build with tests, the CMake option
is now BUILD_TESTING (BUILD_TESTS is gone) (!539), and build info no longer records credentials
embedded in the git remote URL (!568, #561). The rest: regression CI moved fully to pytest,
the container recipes were refactored, and carputils gained a large test suite.
© Copyright 2020 openCARP project Supported by DFG and EuroHPC Contact Imprint and data protection