"""
Description:
Box of A & B with reactions:
- A -> 0 decay
- A -> B decay
- A + B -> C irreversible
- A + B <-> C reversible

"""

import pymcell as pm

# Make worlds:
world = pm.make_world()

# Add objects:
box = pm.make_object(name='Box', type='CUBE')  # default size and position
world.add_object(box)

# Add species:
mol_a = pm.make_species(name='a')  # red, Sphere_1, 1e-6, and VOLUME by default
mol_b = pm.make_species(name='b', color=[0, 0, 1])  # blue
mol_c = pm.make_species(name='c', color=[0, 1, 0])  # green
world.add_species(mol_a, mol_b, mol_c)

# Add release patterns:
rel_a_b = pm.make_release_pattern(species_list=[mol_a, mol_b],
                                  release_region=box)
world.add_release_pattern(rel_a_b)

# Add reactions:
"""
Description:
Surface classes
- Box with one transparent side to molecule A
- Box with absorptive side to molecule A
- Box with concentration clamp of A on one side and absorptive on the opposing side

"""

import pymcell as pm

# Make worlds:
world_trans = pm.make_world()  # "name = " defaults to "World_1"
world_abs = pm.make_world()  # "name = " defaults to "World_2"
world_clamp_abs = pm.make_world()

# Add objects:
box = pm.make_object(name='Box', type='CUBE')  # default size and position
world_trans.add_object(box)
world_abs.add_object(box)
world_clamp_abs.add_object(box)

# Add species:
mol_a = pm.make_species(name='a')  # red, Sphere_1, 1e-6, and VOLUME by default
world_trans.add_species(mol_a)
world_abs.add_species(mol_a)
world_clamp_abs.add_species(mol_a)

# Add surface classes:
trans_surf = pm.make_surface_class(type='TRANSPARENT', molecules=[mol_a])
abs_surf = pm.make_surface_class(type='ABSORPTIVE', molecules=[mol_a])