Example 9 demonstrates the use of another file to change the conditions of a simulation. This simulation uses a scaling procedure to change the size of a vesicle pore.
![]() |
![]() |
| iterations = 0 | iterations=250 |
![]() |
![]() |
| iterations=750 | iterations=1000 |
file pore_scale
pore_scale = 1.0file simple_pore.mdl
it=1000
dt=1.0e-6
TIME_STEP = dt
ITERATIONS = it
INCLUDE_FILE = "pore_scale"
pore_step_file = fopen("pore_scale","w")
fprintf(pore_step_file,"pore_scale = %f\n",pore_scale*1.1)
CHECKPOINT_INFILE = "chkpt"
CHECKPOINT_OUTFILE = "chkpt"
CHECKPOINT_ITERATIONS = 101
DEFINE_LIGAND transmitter {
DIFFUSION_CONSTANT = 2.0e-6
}
INSTANTIATE fusion_pore OBJECT {
transmitter_release_site SPHERICAL_RELEASE_SITE {
LOCATION = [0,0,0.025]
LIGAND = transmitter
NUMBER_TO_RELEASE = 1000
SITE_DIAMETER = 0.05
}
vesicle BOX {
CORNERS = [-0.025,-0.025,0.0], [0.025,0.025,0.05]
FULLY_CLOSED = YES
}
pore BOX {
CORNERS = [-0.001,-0.001,-0.03], [0.001,0.001,0.0]
FULLY_CLOSED = YES
TRANSPARENT {
LIGAND = transmitter
ELEMENT = TOP
}
TRANSPARENT {
LIGAND = transmitter
ELEMENT = BOTTOM
}
SCALE = [pore_scale,pore_scale,1.0]
}
}
VIZ_DATA_OUTPUT {
MODE = DX
ITERATION_LIST = [[0 TO 1000 STEP 100]]
OBJECT_FILE_DESIGNATORS {
fusion_pore = "fusion_pore"
}
STATE_VALUES {
fusion_pore = 1
transmitter = 2
}
}
REACTION_DATA_OUTPUT {
STEP = dt
{ COUNT[transmitter,WORLD,FOR_EACH_TIME_STEP] } => INPUT_FILE & ".transmitter.world"
{ COUNT[transmitter,fusion_pore.vesicle,FOR_EACH_TIME_STEP] } => INPUT_FILE & ".transmitter.vesicle"
{ COUNT[transmitter,fusion_pore.pore,FOR_EACH_TIME_STEP] } => INPUT_FILE & ".transmitter.pore"
}