Add Impedance boundary condition#235
Open
ncdorn wants to merge 24 commits into
Open
Conversation
# Conflicts: # src/model/BlockType.h
…pdating related error handling
# Conflicts: # .gitignore # src/model/BlockType.h # src/model/CMakeLists.txt # src/model/ChamberElastanceInductor.cpp # src/model/ChamberElastanceInductor.h # src/model/Model.cpp # src/model/Model.h # src/solve/SimulationParameters.cpp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Current situation
This branch adds support for an
IMPEDANCEoutlet boundary condition based on an Olufsen et al. (1999) time-domain convolution. The need for this BC is to represent the frequency-dependent downstream response of a structured tree, including wave reflection and distributed vascular memory, which cannot be captured well by a simple resistance or RCR model.The implementation treats outlet pressure as
P = Pd + z0 * Q + sum(z[m] * Q_lag[m])where
zis a one-cycle discrete impedance kernel and the lagged flow terms come from accepted solution history. To make that work insvZeroDSolver, the solver needed explicit support for boundary-condition memory that persists across accepted time steps, can be restored for coupled trial steps, and stays consistent with the configured cardiac-period discretization.Release Notes
Add a bullet point list summary of the feature and possible migration guides if this is a breaking change so this section can be added to the release notes.
IMPEDANCEboundary condition for structured-tree style outlet loading using a periodic discrete convolution kernel.bc_values.z, optionalPd, and convolution controls viaconvolution_mode = exact|truncatedandnum_kernel_terms.Documentation
Documentation is included in the README with:
IMPEDANCEBC definition,Testing
Coverage added in this branch includes:
tests/cases/pulsatileFlow_R_impedance.jsonwith reference output,IMPEDANCE,Code of Conduct & Contributing Guidelines