import numpy as np

L = np.array([80, 60, 80])
atoms = create_bulk_crystal("brucite", L)

L = atoms.cell.lengths()

geometry = BoxGeometry(center=L / 2,
                       length=[L[0], L[1] / 2 - 3, 4 * L[2] / 5 + 2],
                       periodic_boundary_condition=(True, True, True))

carve_geometry(atoms, geometry, side="out")

volume = atoms.cell.volume
water_volume = volume - geometry.volume()
pack_water(atoms=atoms, volume=water_volume, pbc=2.0, tolerance=1.8)

write(atoms, "brucite_in_water.data", bond_specs=("O", "H", 1.02))
write(atoms,
      "brucite_in_water_perspective.png",
      bond_specs=("O", "H", 1.02),
      camera_dir=[1, 0, 0],
      viewport_type="perspective",
      size=(480, 640))
write(atoms,
      "brucite_in_water_orthogonal.png",
      bond_specs=("O", "H", 1.02),
      camera_dir=[1, 0, 0],
      viewport_type="orthogonal",
      size=(480, 640))
Esempio n. 2
0
from ase.io import read
from molecular_builder import carve_geometry, write
from molecular_builder.geometry import ProceduralSurfaceGeometry

atoms = read("block.data", format="lammps-data", style="molecular")

# Carve out geometry from beta-cristobalite
geometry = ProceduralSurfaceGeometry(point=(100, 100, 40),
                                     normal=(0, 0, 1),
                                     thickness=20,
                                     method='simplex',
                                     scale=3,
                                     octaves=2,
                                     seed=16591,
                                     threshold=0)
num_carved = carve_geometry(atoms, geometry, side="out")

write(atoms, "two_level.data")
write(atoms, "two_level.png", camera_dir=[0, 0, -1])
Esempio n. 3
0
from ase.io import read
from molecular_builder import carve_geometry, write
from molecular_builder.geometry import ProceduralSurfaceGeometry

atoms = read("block.data", format="lammps-data", style="molecular")

# Carve out geometry from beta-cristobalite
geometry = ProceduralSurfaceGeometry(point=(100, 100, 40),
                                     normal=(0, 0, 1),
                                     thickness=20,
                                     method='simplex',
                                     scale=3,
                                     octaves=2,
                                     seed=16591)
num_carved = carve_geometry(atoms, geometry, side="out")

write(atoms, "parameters.data")
write(atoms, "parameters.png", camera_dir=[2, 1, -1])
Esempio n. 4
0
from molecular_builder import create_bulk_crystal, write
atoms = create_bulk_crystal("alpha_quartz", size=[20, 20, 20])
write(atoms, "alpha_quartz.data")
write(atoms, "alpha_quartz.png", viewport_type="orthogonal")
from molecular_builder import fetch_prepared_system, write

atoms = fetch_prepared_system(
    "vashishta_1990_like_amorphous_silica_quench_300K",
    type_mapping=[[1, 14], [2, 8]])
write(atoms, "amorphous_silica.png")
from molecular_builder import create_bulk_crystal, carve_geometry, fetch_prepared_system, write
from molecular_builder.geometry import BerkovichGeometry, CylinderGeometry

slab = fetch_prepared_system(
    "vashishta_1990_like_amorphous_silica/quench_950K",
    type_mapping=[(1, 14), (2, 8)])
print(slab.numbers)

slab.cell[2, 2] = 80  # Expand cell in z direction to fit indenter

indenter = create_bulk_crystal("diamond", (144, 144, 80), round="down")
carve_geometry(indenter, BerkovichGeometry((75, 75, 40)), side="out")
carve_geometry(indenter,
               CylinderGeometry((75, 75, 50), 60, 200, orientation=(0, 0, 1)),
               side="out")

atoms = slab + indenter

write(atoms,
      "indenter_over_silica.png",
      bond_specs=[("Si", "O", 1.9)],
      camera_dir=(2, 1.5, -0.4),
      atom_radii=[("Si", 0.2), ("O", 0.2)],
      size=(1280, 960))
from molecular_builder import create_bulk_crystal, carve_geometry, write
from molecular_builder.geometry import ProceduralSurfaceGeometry

# Create bulk of beta-cristobalite
atoms = create_bulk_crystal("beta_cristobalite", [200, 200, 50])
write(atoms, "block.png")

# Carve out geometry from beta-cristobalite
geometry = ProceduralSurfaceGeometry(point=(100, 100, 40),
                                     normal=(0, 0, 1),
                                     thickness=20,
                                     octaves=1,
                                     method='simplex',
                                     )
num_carved, carved = carve_geometry(atoms, geometry, side="out", return_carved=True)

write(atoms, "block_with_procedural_surface.png")
Esempio n. 8
0
from molecular_builder import create_bulk_crystal, write
atoms = create_bulk_crystal("beta_cristobalite", size=[20, 20, 20])
write(atoms, "beta_cristobalite.data")
write(atoms, "beta_cristobalite.png", viewport_type="orthogonal")
Esempio n. 9
0
from molecular_builder import create_bulk_crystal, carve_geometry, write, pack_water
from molecular_builder.geometry import CylinderGeometry
import numpy as np

atoms = create_bulk_crystal("alpha_quartz", [60, 60, 60])

r = 25
l = atoms.cell[0][0]

geometry = CylinderGeometry([30, 30, 30], r, 100, orientation=[1, 0, 0])

water_volume = np.pi * r**2 * l

carve_geometry(atoms, geometry, side="in")

pack_water(atoms, volume=water_volume, pbc=4.0, tolerance=1.5, density=0.8)

write(atoms, "alpha_quartz_cylinder_hole_water.data")
write(atoms, "alpha_quartz_cylinder_hole_water.png", camera_dir=[3, 1, -1])
Esempio n. 10
0
from molecular_builder import create_bulk_crystal, carve_geometry, fetch_prepared_system, write, pack_water
from molecular_builder.geometry import BoxGeometry

blob = fetch_prepared_system("ch_blob/10nm", type_mapping=[(1, 6), (2, 1)])
blob.positions[:, 2] += 37

slab = fetch_prepared_system(
    "vashishta_1990_like_amorphous_silica/quench_950K",
    type_mapping=[(1, 14), (2, 8)])
slab.cell[2, 2] += 105

sodium_chlorate = create_bulk_crystal("sodium_chlorate",
                                      size=(slab.cell[0, 0], slab.cell[1,
                                                                       1], 25),
                                      round="down")
carve_geometry(sodium_chlorate,
               BoxGeometry([slab.cell[0, 0] * 3 / 4, slab.cell[1, 1] / 2, 0],
                           [slab.cell[0, 0] / 2, slab.cell[1, 1] + 100, 5]),
               side="in")
sodium_chlorate.translate((0, 0, 118))

atoms = (slab + blob) + sodium_chlorate

pack_water(atoms, 10000, pbc=2.0, tolerance=2.0)

write(atoms,
      "sodium_chlorate_hydrocarbon_blob_water.png",
      camera_dir=(0, 1, 0),
      viewport_type="orthogonal",
      bond_specs=[("O", "H", 0.95), ("Si", "O", 1.9)],
      atom_radii=[("Si", 0.2), ("O", 0.6)])
Esempio n. 11
0
from molecular_builder import create_bulk_crystal, carve_geometry, write
from molecular_builder.geometry import CylinderGeometry

atoms = create_bulk_crystal("silicon_carbide_3c", [100, 100, 100])

geometry = CylinderGeometry([50, 50, 50], 20, 100, orientation=[1, 0, 1])

carve_geometry(atoms, geometry, side="out")

write(atoms, "cylinder.data")
write(atoms, "cylinder.png", camera_dir=[3, 2, -1])
Esempio n. 12
0
from molecular_builder import create_bulk_crystal, carve_geometry, write
from molecular_builder.geometry import SphereGeometry

atoms = create_bulk_crystal("silicon_carbide_3c", [100, 100, 100])

geometry = SphereGeometry((50, 50, 50), 40)

carve_geometry(atoms, geometry, side="out")

write(atoms, "sphere.data")
write(atoms, "sphere.png", camera_dir=[3, 1, -1])
from molecular_builder import create_bulk_crystal, write

atoms = create_bulk_crystal("alpha_quartz", [50, 100, 50])

write(atoms, "alpha_quartz_mb.data", bond_specs=[("Si", "O", 2.8)])
write(atoms, "alpha_quartz_mb.png", bond_specs=[("Si", "O", 2.8)])
Esempio n. 14
0
from ase.io import read
from molecular_builder import carve_geometry, write
from molecular_builder.geometry import ProceduralSurfaceGeometry

atoms = read("block.data", format="lammps-data", style="molecular")


# Define function to add
def f(x, y):
    if x < 100:
        return x / 100
    else:
        return 1 - (x - 100) / 100


# Carve out geometry from beta-cristobalite
geometry = ProceduralSurfaceGeometry(point=(100, 100, 40),
                                     normal=(0, 0, 1),
                                     thickness=20,
                                     method='simplex',
                                     scale=3,
                                     octaves=2,
                                     seed=16591,
                                     threshold=0,
                                     repeat=True,
                                     f=f)
num_carved = carve_geometry(atoms, geometry, side="out")

write(atoms, "add_function.data")
write(atoms, "add_function.png", camera_dir=[0, 1, -1])
Esempio n. 15
0
from ase.io import read
from molecular_builder import carve_geometry, write
from molecular_builder.geometry import ProceduralSurfaceGeometry

atoms = read("block.data", format="lammps-data", style="molecular")

# Carve out geometry from beta-cristobalite
geometry = ProceduralSurfaceGeometry(point=(100, 100, 40),
                                     normal=(0, 0, 1),
                                     thickness=20,
                                     seed=97455)
num_carved = carve_geometry(atoms, geometry, side="out")

write(atoms, "basic.data")
write(atoms, "basic.png", camera_dir=[2, 1, -1])
Esempio n. 16
0
from molecular_builder import create_bulk_crystal, carve_geometry, write
from molecular_builder.geometry import DodecahedronGeometry

atoms = create_bulk_crystal("silicon_carbide_3c", [100, 100, 100])

geometry = DodecahedronGeometry(30, (50, 50, 50))

carve_geometry(atoms, geometry, side="out")

write(atoms, "dodecahedron.data")
write(atoms, "dodecahedron.png", camera_dir=[3, 1, -1])
Esempio n. 17
0
from ase.io import read
from molecular_builder import carve_geometry, write
from molecular_builder.geometry import ProceduralSurfaceGeometry

atoms = read("block.data", format="lammps-data", style="molecular")

# Carve out geometry from beta-cristobalite
geometry = ProceduralSurfaceGeometry(point=(100, 100, 40),
                                     normal=(0, 0, 1),
                                     thickness=20,
                                     method='simplex',
                                     scale=3,
                                     octaves=2,
                                     seed=16591,
                                     threshold=0,
                                     repeat=(100, 200))
num_carved = carve_geometry(atoms, geometry, side="out")

write(atoms, "periodic2.data")
write(atoms, "periodic2.png", camera_dir=[0, 0, -1])
Esempio n. 18
0
from molecular_builder import create_bulk_crystal, carve_geometry, write
from molecular_builder.geometry import BoxGeometry

atoms = create_bulk_crystal("silicon_carbide_3c", [100, 100, 100])

geometry = BoxGeometry([50, 50, 50], [70, 70, 70])

carve_geometry(atoms, geometry, side="out")

write(atoms, "box.data")
write(atoms, "box.png", camera_dir=[3, 2, -1])
Esempio n. 19
0
from ase.io import read
from molecular_builder import carve_geometry, write
from molecular_builder.geometry import ProceduralSurfaceGeometry

atoms = read("block.data", format="lammps-data", style="molecular")

# Carve out geometry from beta-cristobalite
geometry = ProceduralSurfaceGeometry(point=(100, 100, 40),
                                     normal=(0, 0, 1),
                                     thickness=20,
                                     method='simplex',
                                     scale=3,
                                     octaves=2,
                                     seed=16591,
                                     threshold=0,
                                     repeat=True,
                                     angle=45)
num_carved = carve_geometry(atoms, geometry, side="out")

write(atoms, "screwed.data")
write(atoms, "screwed.png", camera_dir=[0, 0, -1])