Need for different lattice vectors on different elements during a simulation
To solve this issue we will consider 3 scenarios:
- Creating a mesh file with lattice vector information per cell. We will then read this mesh file during a simulation and use the lattice vector information stored in the mesh file for the elements during the simulation. For scenario the main task is:
-
Decoupling the lattice vector variable from the material class.
-
- This is because currently the lattice vectors are computed during mesh generation in
preprocessor.cpp
(specifically in L89) using the materials associated with the vertices of the elements. For elements whose vertices have different materials this is an issue. So we will decouple the lattice vector information from the material and directly set the lattice vectors of each element in the mesh generation. - Doing this also enforces that all areas where different materials and elements with different lattice vectors meet are fully refined. Therefore an additional task:
-
Make sure during mesh generation and during mesh loading that adjacent elements with different lattice vectors are fully refined, i.e. that they carry the atomistic flag.
-
-
For simulations where we want to load prefect crystalline meshes (all elements same lattice vectors) we can use the workflow we use know where this info is stored in the file
MyLattice.txt
provided throughuserinput.json
. -
The last scenario consists on generating the mesh by reading coorinates from a txt file. For this, the txt file will need to include the information of the material for each atom/coordinate. Which brings back to the problem that we will need to set the lattice vectors according to this coordinates which will become the vertices. So we will still have the problem mentioned in scenario 1. What should we do here?