Simulation

Generation of the metamodel, mathematical formulation and simulation is carried out in main.exe

Step 3: Setting up the computational domain for multiphysics simulation

The static flow field is computed by treating the vasculature as cylindrial network of pipes. For computing the transient concentration fields in the vasculature, the nodes in the discretized blood vessel domain are approximated as spherical and cylindrical volume elements which represent well mixed stirred tank units. At first, the cylindrical volume of the edge formed by each mesh element is evaluated; the height (l) and diameter(d) of the cylindrical volume elements are equal to the mesh size and vessel segment diameter, respectively. The bifurcation and trifurcation junctions are modelled as spherical volume elements and the non-junction nodes are modelled as cylindrical volume elements. The volume elements are formed by merging the half cylinder volumes of the adjoining edges. For studying cell-to-vessel exchange, the volume of the tissue monolayer surrounding the vessel is approximated by the volume of a hollow cylinder (also referred here as the donut volume). Advection-diffusion-reaction is modelled by writing mole balance equation for the transport occuring accross each volume element. Coupling between the donut element and the cylindrical volume element is established at reaction nodes which include all nodes in the domain expect for the junctional and terminal nodes.

Step 4: Simulation of static flow fields and transient concentration dynamics

Boundary conditions and the user-defined settings related to the dynamic simulations (advection-dispersion physics or advection-dispersion-reaction physics) can be modified in the initialization file input.ini.

To run static and dynamic simulations for capillary networks, please clone this repository and run the MATLAB executable main.exe.

Download

Execution in the command line of MATLAB

Options available for user-defined settings:

  • test_graph : ‘test9’

  • tspan : 0:0.0001:0.25

  • run : struct(‘single’, true, ‘gscan’, false, ‘pscan’, false, ‘ascan’, false, ‘tspan’, 0:0.0001:0.25, ‘tend’, 0.25);

  • pbc : ‘pbc2’

  • discretize : true

  • userdefined_qin : false

  • qin : 1E+6

  • model : struct(‘vessel’, true)

  • NVs : 1

  • IC_Vspecies: struct(‘glc_ext’, 5, ‘lac_ext’, 1.2, ‘ins_ext’, 1.7, ‘cpep_ext’, 1.7)

  • Vinf : struct(‘glc_ext’, 8, ‘lac_ext’, 3, ‘ins_ext’, 0, ‘cpep_ext’, 0)

  • IC_Cspecies: struct(‘glc’, 0, ‘lac’,0)

  • rxn_set : struct(‘degree_2’,true)

  • rxn_vol : struct(‘equal’, false)

  • transporter: struct(‘glc_ext’, struct(‘Vm’, 100, ‘Km’, 1.0), ‘lac_ext’, struct(‘Vm’, 100, ‘Km’, 0.5))

  • Vspecies : [“glc_ext”, “lac_ext”]

  • NCs : 2

  • Cspecies : [“glc”, “lac”]

  • diffusivity: struct(‘glc_ext’, 5.46E4, ‘lac_ext’,7.71E4, ‘ins_ext’, 9.6E3, ‘cpep_ext’, 9.6E3)

  • glucose_scan : 2:0.5:20

  • pressure_scan : 20:20:200

  • jpattern_set : true

  • jacobian_set : false

  • saveop_4julia : false