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])
c = 5.51891759 # length of triclinic unit cell in c-dir (and z-dir) angle = 60 h = b * np.sin(np.deg2rad(angle)) # length of triclinic unit cell in y-dir numcellsx = -(-xlen // a) # number of cells in x-dir, rounded up numcellsy = -(-ylen // h) # number of cells in y-dir, rounded up numcellsz = -(-zlen // c) # number of cells in z-dir, rounded up lengthx = numcellsx * a # actual length in x-dir lengthy = numcellsy * h # actual length in y-dir lengthz = numcellsz * c # actual length in z-dir lengthnoise = np.asarray((lengthx, lengthy, lengthz)) scalenoise = lengthnoise / scale # Create bulk of alpha-quartz quartz = create_bulk_crystal("alpha_quartz", (xlen, ylen, zlen)) # Carve out geometry from alpha-quartz surface_geometry = ProceduralSurfaceGeometry(point=(xlen/2, ylen/2, zlen/2), normal=(0, 0, 1), thickness=noise_thickness, octaves=octaves, scale=scalenoise, pbc=lengthnoise, angle=angle, method='perlin', threshold=0) carve_geometry(quartz, surface_geometry, side="in") quartz.write("quartz.data", format="lammps-data")
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])
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])
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")