Molecule Polymer Comb ======================= Arguments: * `nmolecule` (int) - Number of molecules in simulation * `moleculeX` (json object) - Information about `moleculeX` where `X` ranges from 0 to `nmolecule-1`. In each `moleculeX` object the following must be specified: * `type` (string) - Type of molecule. Here `PolymerComb` * `label` (string) - label for this molecule, defaults to `molX` * `chain_type` (string) - Type of chain statistics. Either `discrete` (as documented here) or `continuous`. * `volume_frac` (float) - Volume fraction of `moleculeX` in the simulation. Must be 0-1. * `backbone` (json object or dict) - Backbone chain information. Required arguments depend on `chain_type` specified earlier. For example, if `chain_type=discrete` the arguments `nbeads`, `nblocks`, `block_species`, `block_fractions` (or `monomer_sequence`) must be specified. See :ref:`Molecule Polymer Linear (continuous)` and :ref:`Molecule Polymer Linear (discrete)` for required arguments. * `sidechainX` (json object) - Sidechain information of `sidechainX` where `X` starts at 1. In each `sidechainX` object, all information of the corresponding `chain_type` must be specified (see `backbone` argument above). Additionally, the following argument must also be specified: * `graft_locations` (list int) - the indicies of backbone sites that this sidechain will be grafted to. Indexing starts at 0. Example (python):: # this creates an A-B bottlebrush fA = 0.5 # fraction of A beads N_BB = 50 # backbone length N_SC = 10 # sidechain length B_graft_start = int(fA*N_BB) fts.add_molecule(type='PolymerComb',\ chain_type='discrete',\ backbone=dict(nbeads=N_BB,nblocks=2,block_fractions=[fA, 1-fA],block_species=['A', 'B']),\ sidechain1=dict(nbeads=N_SC,nblocks=1,block_fractions=[1.0],block_species=['A'], graft_locations=list(range(0,B_graft_start))),\ sidechain2=dict(nbeads=N_SC,nblocks=1,block_fractions=[1.0],block_species=['B'], graft_locations=list(range(B_graft_start,N_BB))),\ volume_frac=1.0) Example (json):: "molecules": { "molecule0": { "backbone": { "block_fractions": [0.5,0.5], "block_species": ["A","B"], "nbeads": 50, "nblocks": 2 }, "chain_type": "discrete", "sidechain1": { "block_fractions": [1.0], "block_species": ["A"], "graft_locations": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], "nbeads": 10, "nblocks": 1 }, "sidechain2": { "block_fractions": [1.0], "block_species": ["B"], "graft_locations": [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49], "nbeads": 10, "nblocks": 1 }, "type": "PolymerComb", "volume_frac": 1.0 }, "nmolecule": 1 }, Molecule Polymer Comb Formalism -------------------------------------- This is described in Levi, Lequieu et al. Macromolecules (2020). Eventually should sumarize here.