-
Notifications
You must be signed in to change notification settings - Fork 1
Generate Simulations
In the generate subdirectory, there are a variety of different simulation setups that can be compiled with:
g++ -O3 name.cpp -o ~/bin/name
Where name can be replaced by one of the following:
-
Pure lipid Systems
- liposome
- bilayer
- tube
- bendComposition
- setMDConstants_UminAH
- domain
-
Nanoparticles
- setMDConstants
- continuumSphereAndBilayer
- continuumSphereGrid
- continuumSphereSurfactant
- continuumSphereAndLiposome
- continuumSphereAndLiposomeWrapped
- nanoSphereAndBilayer
- nanoSphereGrid
- nanoSphereModBilayer
- rigidNano
-
Brushes
- brushes
- brushesAndNanoparticles
- rBrushesAndNanoparticles
- movingBrushesAndNanoparticles
-
Miscellaneous
- solventBilayer
- solvent
- build
- tetrahedron
- gas
- lipoCyto
- scl
These just have lipids. The three geometries, lipisomes, bilayer, and tube, correspond to spherical, flat, and cylindrical lipid bilayers. Their options are usually based on the number of lipids and surface density of the lipids.
Radially arranged lipid bilayers. There are constraints on lipid number and surface density. The liposome.cpp code has the following options:
liposome name seed nLipids arealDensity
- name: Name of mpd file (i.e. name.mpd)
- seed: Random number generator seed number (integer, suggest $RANDOM)
- nLipids: Number of lipids (integer, suggest at least 10000)
- arealDensity: nLipids/area (floating point, suggest 3.45)
Z axis aligned bilayer that can be in made into a continuous surface with periodic boundaries. There are constraints on the lipid number and surface density. These are arranged in a n by m lipid grid. The bilayer.cpp code has the following options:
bilayer name seed nLipids arealDensity UminAnchorHead nAnchorX nAnchorY nMonomers
- name: Name of mpd file (i.e. name.mpd)
- seed: Random number generator seed number (integer, suggest $RANDOM)
- nLipids: Number of lipids (integer, suggest at least 1000)
- arealDensity: nLipids/area (floating point, suggest 3.11)
- UminAnchorHead: Adhesion energy of anchor to lipid head groups (floating point, 0 is okay)
- nAnchorX and nAnchorY: Number of anchors along the x and y directions (integer, 0 is okay)
- nMonomers: Number of monomers joining neighboring anchors (integer, 0 is okay)
Radially arranged lipid bilayer along X axis and periodically arranged on the y-z planes.
These are nanoparticles alone or are combined with lipids. The three models, solid, shell, and continuum, correspond to the nanoparticle type.
This is formed from a lattice with a certain lattice length.
This is a meshed surface nanoparticle. There are constraints on the geometry and mesh density. The JanusP.cpp code can insert a single nanoparticle into another simulation. For example, If I generate a bilayer system, creating a file named bilayer.mpd, with:
bilayer bilayer $RANDOM 40000 3.11 0 0 0 0
Then I can use JanusP to generate a new system, creating a file named bilayerWJanus.mpd, with:
JanusP bilayer bilayerWJanus 1200 45 250 50 0.5 50 50 50 10 3 -2
Where JanusP options are:
JanusP oldName newName vBond cBond kbend particlebond ratio pX pY pZ particleradius tesselation Umin
- oldName newName: Using oldName.mpd, create newName.mpd with a janus nanoparticle.
- vBond: Vertex bond constant?
- cBond: Center particle bond constant?
- kbend: Triangle bending constant for icosahedron tessellation
- particlebond: particle bond constant?
- ratio: janusity of NP (from 0 to 1)
- pX pY pZ: The center of mass x, y, and z coordinates of the particle
- particleradius: The radius of the nanoparticle
- tesselation: The number of tessellation iterations to perform on the icosahedron
- Umin: The adhesion strength between the nanoparticle and bilayer head groups (suggest 0 to -1)
This is similar to continuumSphereAndLiposome.cpp. Unlike JanusP, this one will add multiple janus particles to a liposome, offset by an angle. The options are:
janusAndLiposome name seed nLipids lipidArealDensity nanoRadius nanoHeadUmin nanoHeadUmax nTessellations nNanoInside nNanoOutside dAngle
- name: Produces name.mpd
- seed: Random number seed
- nLipids: Number of lipids in liposome
- lipidArealDensity: Number of lipids per unit area in liposome (suggest 3.45)
- nanoRadius: Radius of nanoparticle (suggest 5-50)
- nanoHeadUmin: The adhesion strength between the nanoparticle and bilayer head groups (suggest 0 to -4)
- nanoHeadUmax: The repulsion strength between the nanoparticle and bilayer head groups (suggest 40 to 200)
- nTessellations: Number of tessellation iterations to perform on the icosahedron
- nNanoInside: Number of nanoparticles inside liposome
- nNanoOutside: Number of nanoparticles outside liposome
- dAngle: Angle between nanoparticle-liposome-nanoparticle center of masses
This is a point like spherical nanoparticle with a surface density and radius. This is the simplest.
These are polymers bound to a substrate. The polymers' monomers start from the substrate and linked by bonds along the z direction. There are constraints on the polymer number, length, and density. The two generate codes have the following options:
brushes name seed nBrushes arealDensity UminBrushBrush UmaxBrushBrush nMonomers bondLength temp
Where:
- name: Name of mpd file (i.e. name.mpd)
- seed: Random number generator seed number (integer, suggest $RANDOM)
- nBrushes: Number of polymers (integer, nBrushes=n_x*n_y, useful if n_x=n_y, suggest 100, 400, 1600)
- arealDensity: nBrushes/area (floating point, suggest 0.01 to 1.0)
- UminBrushBrush: Adhesion value of polymer monomer to another polymer monomer (floating point, suggest 0.0 to -1.0)
- UmaxBrushBrush: Repulsion value of polymer monomer to another polymer monomer (floating point, suggest 100.0 to 200.0)
- nMonomers: Number of polymer monomers, i.e. length (integer, suggest 10 to 100)
- bondLength: Length of bond between monomers in a polymer (floating point, suggest 0.7 to 1.0)
- temp: Temperature of system (floating point, suggest 3.0)
brushesAndNanoparticles name seed nBrushes arealDensity UminBrushNP UmaxBrushNP nNanoparticles nanoRadius UminBrushBrush UmaxBrushBrush nMonomers bondLength temp
Where they are the same as brushes.cpp, and include:
- UminBrushNP: Adhesion value of polymer monomer to a nanoparticle (floating point, suggest 0.0 to -1.0)
- UmaxBrushNP: Repulsion value of polymer monomer to a nanoparticle (floating point, suggest 40.0)
- nNanoparticles: Number of continuum nanoparticles in system (integer, suggest 1 to 20)
- nanoRadius: Radius of the nanoparticles in system (floating point, suggest 2.0 to 40.0)
For example, to generate 800 (actually 784=floor(sqrt(800))^2) polymers, with brush density of 0.5 polymers/r_min^2 of length 100, and 20 nanoparticles, with radius of 2 and NP-Monomer adhesion of -0.5 the following command will generate a system called "test" (creating files test.mpd and test.xyz):
brushesAndNanoparticles test $RANDOM 800 0.5 -0.5 40 20 2 0 100 100 0.7 3.0
brushesAndNanoparticles name seed nBrushes arealDensity UminBrushNP UmaxBrushNP nNanoparticles nanoRadius UminBrushBrush UmaxBrushBrush nMonomers bondLength temp
With exactly the same parameters as brushesAndNanoparticles, this particular generator will actually produce a random arrangement of polymers on the substrate. The benefit of this method is that instead of producing a close enough pattern to the input number and density of polymers, we can get exactly the input number for a given density.
movingBrushesAndNanoparticles name seed nBrushes arealDensity UminBrushNP UmaxBrushNP nNanoparticles nanoRadius UminBrushBrush UmaxBrushBrush nMonomers bondLength temp
Although it uses the same shell like NP and random arrangement algorithm as rBrushesAndNanoparticles.cpp for the initial condition, this version has polymer ends adhered to a substrate along the x-y plane. This substrate confines the polymer end to one rmin unit above the x-y plane using the potential described in include/potentials/laradjiPoursoroush.h (effectively a nanoparticle shell with infinite radius). The following parameters allow 40 continuum NPs to adhere and adsorb into a 800 polymer brush:
movingBrushesAndNanoparticles mBrushes_0.5 $RANDOM 800 0.5 -0.5 40 40 2 0 40 100 0.7 3.0
Substrate density, Umin, and Umax for the substrate are defined as 5.88, -2, and 40 on lines 194, 201, and 202 in movingBrushesAndNanoparticles.cpp.