First time here? Checkout the FAQ!
x
0 votes
by (190 points)
Hello!

I am initializing a tissue simulation using the "prepacing" method, whereby a cell model is run prior to the tissue simulation and state parameters are assigned to the tissue based on LAT sequence.

The problem I am having is that the cell model requires a small timestep ~0.05 in order for the states to reach equilibrium (otherwise, every other stimulus fails to produce a proper depolarization, and equilibrium with the same APD per beat is never achieved; this is for a particular set of parameters in the mMS model at bcl of 300. I would imagine, by looking at the trace, that after a few beats of this small dt, that the cell model could probably be run successfully at a much larger dt, but 'getting it going' is the problem).

Is it the case that the timestep used for prepacing a tissue simulation is restricted to being the same timestep used for the tissue simulation itself? Otherwise, how might I use a small timestep in the prepacing simulation to achieve equilibrium, followed by a larger timestep in the tissue simulation?

(note: I am specifically using the 'prepace' method so that states can be assigned based on LATs from a file, as assigning the same states to every tissue region, using the "im_sv_init" method, does not seem to be sufficient).

(I have considered running a few microseconds of simulation with prepacing at a very small timestep, saving the state, and then continuing the simulation with a larger timestep. However, keeping track of every activation, in order to ensure that there was a depolarization and repolarization on every beat, then becomes trickier).

Thanks!

Sam

1 Answer

0 votes
by (3.6k points)
Hi Sam,

You can try by using a different integration method for the equation of the variable h. By default, EasyML uses forward Euler if the variable is not defined as a gate. You can change the integration method using the markup keyword method(). Here is an example of how you can change this in the mMS model.

diff_h = ((U<V_gate) ? ((1. - h)/tau_open) : (-h/tau_close)); .method(rush_larsen);

You could also look at our example of EasyML in https://opencarp.org/documentation/examples/01_ep_single_cell/05_easyml

Best,

Jorge
by (190 points)
Hi Jorge,

Thanks for your answer. Are you suggesting that, by using a different integration method for h, that the problem of 'failed activation with too large a timestep' might be solved, and therefore I would not have to prepace at a different (smaller) timestep?

Thanks again,
Sam
by (3.6k points)
Hi Sam,

Yes, that might help you with bigger time steps.

Best,

Jorge
Welcome to openCARP Q&A. Ask questions and receive answers from other members of the community. For best support, please use appropriate TAGS!
architecture, carputils, documentation, experiments, installation-containers-packages, limpet, slimfem, website, governance
MathJax.Hub.Config({ tex2jax: { inlineMath: [ ['$','$'], ["\\(","\\)"] ], config: ["MMLorHTML.js"], jax: ["input/TeX"], processEscapes: true } }); MathJax.Hub.Config({ "HTML-CSS": { linebreaks: { automatic: true } } });
...