![]() |
|
This setup introduces the use of checkpointing. Ligands originally diffuse within a central box, then diffuse out when the checkpoint is reached, and are counted by the sampling boxes located outside of the original box.
/* linear_diffusion_1 */
dt = 0.5e-6 iterations = 5000 chkpt_iterations = 2000
D = 6.0e-6 n = 1000
TIME_STEP = dt
ITERATIONS = iterations
PARTITION_X = [-2.55,-2.25,-1.95,-1.65,-1.35,-1.05,-0.75,-0.45,-0.15,
0.15,0.45,0.75,1.05,1.35,1.65,1.95,2.25,2.55]
CHECKPOINT_INFILE = "chkpt"
CHECKPOINT_OUTFILE = "chkpt"
CHECKPOINT_ITERATIONS = chkpt_iterations
DEFINE_LIGAND A {DIFFUSION_CONSTANT = D}
y_value_1 = -1.0 y_value_2 = 1.0
z_value_1 = -1.0 z_value_2 = 1.0
ll1 = [-10.0,y_value_1,z_value_1] ur1 = [10.0,y_value_2,z_value_2]
ll2 = [-0.015,y_value_1,z_value_1] ur2 = [0.015,y_value_2,z_value_2]
offset = .05
ll3 = [-offset,y_value_1,z_value_1] ur3 = [offset,y_value_2,z_value_2]
sampling_template BOX {
CORNERS = ll3,ur3
FULLY_CLOSED = YES
TRANSPARENT {LIGAND = A ELEMENT = ALL_ELEMENTS}
REMOVE_ELEMENT = TOP
REMOVE_ELEMENT = BOTTOM
REMOVE_ELEMENT = FRONT
REMOVE_ELEMENT = BACK
}
INSTANTIATE microdomain OBJECT {
release_site SPHERICAL_RELEASE_SITE {
LOCATION = [0,0,0]
LIGAND = A
NUMBER_TO_RELEASE = n
SITE_DIAMETER = 0.03
}
bounding_walls BOX {
CORNERS = ll1,ur1
FULLY_CLOSED = YES
ABSORPTIVE {LIGAND = A ELEMENT = LEFT}
ABSORPTIVE {LIGAND = A ELEMENT = RIGHT}
}
center_box BOX {
CORNERS = ll2,ur2
FULLY_CLOSED = YES
REFLECTIVE {LIGAND = A ELEMENT = ALL_ELEMENTS}
REMOVE_ELEMENT = TOP
REMOVE_ELEMENT = BOTTOM
REMOVE_ELEMENT = FRONT
REMOVE_ELEMENT = BACK
}
sampling_boxes OBJECT {
left_1 OBJECT sampling_template {TRANSLATE = [-0.3,0,0]}
left_2 OBJECT sampling_template {TRANSLATE = [-0.6,0,0]}
left_3 OBJECT sampling_template {TRANSLATE = [-0.9,0,0]}
left_4 OBJECT sampling_template {TRANSLATE = [-1.2,0,0]}
left_5 OBJECT sampling_template {TRANSLATE = [-1.5,0,0]}
left_6 OBJECT sampling_template {TRANSLATE = [-1.8,0,0]}
left_7 OBJECT sampling_template {TRANSLATE = [-2.1,0,0]}
left_8 OBJECT sampling_template {TRANSLATE = [-2.4,0,0]}
right_1 OBJECT sampling_template {TRANSLATE = [0.3,0,0]}
right_2 OBJECT sampling_template {TRANSLATE = [0.6,0,0]}
right_3 OBJECT sampling_template {TRANSLATE = [0.9,0,0]}
right_4 OBJECT sampling_template {TRANSLATE = [1.2,0,0]}
right_5 OBJECT sampling_template {TRANSLATE = [1.5,0,0]}
right_6 OBJECT sampling_template {TRANSLATE = [1.8,0,0]}
right_7 OBJECT sampling_template {TRANSLATE = [2.1,0,0]}
right_8 OBJECT sampling_template {TRANSLATE = [2.4,0,0]}
}
}
/*
VIZ_DATA_OUTPUT {
MODE = DX
STATE_VALUES {
A = 1
microdomain.bounding_walls = 2
microdomain.center_box = 3
microdomain.sampling_boxes = 4
}
OBJECT_FILE_DESIGNATORS {
microdomain.bounding_walls = "bounding_walls"
microdomain.center_box = "center_box"
microdomain.sampling_boxes = "sampling_boxes"
}
ITERATION_LIST = [0, chkpt_iterations-1]
}
*/
REACTION_DATA_OUTPUT {
STEP = dt
{COUNT[A,microdomain.sampling_boxes.left_1,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_1,FOR_EACH_TIME_STEP]} =>
INPUT_FILE & ".A_1"
{COUNT[A,microdomain.sampling_boxes.left_2,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_2,FOR_EACH_TIME_STEP]} =>
INPUT_FILE & ".A_2"
{COUNT[A,microdomain.sampling_boxes.left_3,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_3,FOR_EACH_TIME_STEP]} =>
INPUT_FILE & ".A_3"
{COUNT[A,microdomain.sampling_boxes.left_4,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_4,FOR_EACH_TIME_STEP]} =>
INPUT_FILE & ".A_4"
{COUNT[A,microdomain.sampling_boxes.left_5,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_5,FOR_EACH_TIME_STEP]} =>
INPUT_FILE & ".A_5"
{COUNT[A,microdomain.sampling_boxes.left_6,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_6,FOR_EACH_TIME_STEP]} =>
INPUT_FILE & ".A_6"
{COUNT[A,microdomain.sampling_boxes.left_7,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_7,FOR_EACH_TIME_STEP]} =>
INPUT_FILE & ".A_7"
{COUNT[A,microdomain.sampling_boxes.left_8,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_8,FOR_EACH_TIME_STEP]} =>
INPUT_FILE & ".A_8"
}
file input_2
/* linear_diffusion_2 */
dt = 1.0e-6 iterations = 5000 chkpt_iterations = 20000
D = 6.0e-6 n = 1000
TIME_STEP = dt
ITERATIONS = iterations
PARTITION_X = [-2.55,-2.25,-1.95,-1.65,-1.35,-1.05,-0.75,-0.45,-0.15,
0.15,0.45,0.75,1.05,1.35,1.65,1.95,2.25,2.55]
CHECKPOINT_INFILE = "chkpt"
CHECKPOINT_OUTFILE = "chkpt"
CHECKPOINT_ITERATIONS = chkpt_iterations
DEFINE_LIGAND A {DIFFUSION_CONSTANT = D}
y_value_1 = -1.0 y_value_2 = 1.0
z_value_1 = -1.0 z_value_2 = 1.0
ll1 = [-10.0,y_value_1,z_value_1] ur1 = [10.0,y_value_2,z_value_2]
ll2 = [-0.015,y_value_1,z_value_1] ur2 = [0.015,y_value_2,z_value_2]
offset = .05
ll3 = [-offset,y_value_1,z_value_1] ur3 = [offset,y_value_2,z_value_2]
sampling_template BOX {
CORNERS = ll3,ur3
FULLY_CLOSED = YES
TRANSPARENT {LIGAND = A ELEMENT = ALL_ELEMENTS}
REMOVE_ELEMENT = TOP
REMOVE_ELEMENT = BOTTOM
REMOVE_ELEMENT = FRONT
REMOVE_ELEMENT = BACK
}
INSTANTIATE microdomain OBJECT {
release_site SPHERICAL_RELEASE_SITE {
LOCATION = [0,0,0]
LIGAND = A
NUMBER_TO_RELEASE = n
SITE_DIAMETER = 0.03
}
bounding_walls BOX {
CORNERS = ll1,ur1
FULLY_CLOSED = YES
ABSORPTIVE {LIGAND = A ELEMENT = LEFT}
ABSORPTIVE {LIGAND = A ELEMENT = RIGHT}
}
center_box BOX {
CORNERS = ll2,ur2
FULLY_CLOSED = YES
TRANSPARENT {LIGAND = A ELEMENT = ALL_ELEMENTS}
REMOVE_ELEMENT = TOP
REMOVE_ELEMENT = BOTTOM
REMOVE_ELEMENT = FRONT
REMOVE_ELEMENT = BACK
}
sampling_boxes OBJECT {
left_1 OBJECT sampling_template {TRANSLATE = [-0.3,0,0]}
left_2 OBJECT sampling_template {TRANSLATE = [-0.6,0,0]}
left_3 OBJECT sampling_template {TRANSLATE = [-0.9,0,0]}
left_4 OBJECT sampling_template {TRANSLATE = [-1.2,0,0]}
left_5 OBJECT sampling_template {TRANSLATE = [-1.5,0,0]}
left_6 OBJECT sampling_template {TRANSLATE = [-1.8,0,0]}
left_7 OBJECT sampling_template {TRANSLATE = [-2.1,0,0]}
left_8 OBJECT sampling_template {TRANSLATE = [-2.4,0,0]}
right_1 OBJECT sampling_template {TRANSLATE = [0.3,0,0]}
right_2 OBJECT sampling_template {TRANSLATE = [0.6,0,0]}
right_3 OBJECT sampling_template {TRANSLATE = [0.9,0,0]}
right_4 OBJECT sampling_template {TRANSLATE = [1.2,0,0]}
right_5 OBJECT sampling_template {TRANSLATE = [1.5,0,0]}
right_6 OBJECT sampling_template {TRANSLATE = [1.8,0,0]}
right_7 OBJECT sampling_template {TRANSLATE = [2.1,0,0]}
right_8 OBJECT sampling_template {TRANSLATE = [2.4,0,0]}
}
}
/*
VIZ_DATA_OUTPUT {
MODE = DX
STATE_VALUES {
A = 1
microdomain.bounding_walls = 2
microdomain.center_box = 3
microdomain.sampling_boxes = 4
}
OBJECT_FILE_DESIGNATORS {
microdomain.bounding_walls = "bounding_walls"
microdomain.center_box = "center_box"
microdomain.sampling_boxes = "sampling_boxes"
}
ITERATION_LIST = [[2000 TO 2500 STEP 100], iterations-1]
}
*/
REACTION_DATA_OUTPUT {
STEP = dt
{COUNT[A,microdomain.sampling_boxes.left_1,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_1,FOR_EACH_TIME_STEP]}
=>
INPUT_FILE & ".A_1"
{COUNT[A,microdomain.sampling_boxes.left_2,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_2,FOR_EACH_TIME_STEP]}
=>
INPUT_FILE & ".A_2"
{COUNT[A,microdomain.sampling_boxes.left_3,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_3,FOR_EACH_TIME_STEP]}
=>
INPUT_FILE & ".A_3"
{COUNT[A,microdomain.sampling_boxes.left_4,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_4,FOR_EACH_TIME_STEP]}
=>
INPUT_FILE & ".A_4"
{COUNT[A,microdomain.sampling_boxes.left_5,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_5,FOR_EACH_TIME_STEP]}
=>
INPUT_FILE & ".A_5"
{COUNT[A,microdomain.sampling_boxes.left_6,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_6,FOR_EACH_TIME_STEP]}
=>
INPUT_FILE & ".A_6"
{COUNT[A,microdomain.sampling_boxes.left_7,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_7,FOR_EACH_TIME_STEP]}
=>
INPUT_FILE & ".A_7"
{COUNT[A,microdomain.sampling_boxes.left_8,FOR_EACH_TIME_STEP]+
COUNT[A,microdomain.sampling_boxes.right_8,FOR_EACH_TIME_STEP]}
=>
INPUT_FILE & ".A_8"
}