Tutorial 9
Simple Pore
 

 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.0

file 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"
}







Return to Tutorials
Return to MCell