Hello All,

I am currently working on rewriting an existing code into PETSc. This 
particular code performs tight binding and works on a tiled hexagonal carbon 
lattice as a mesh. I am wondering what the best DM format is to represent this? 
Some potentially relevant info:

1. General setup looks like this 
(https://www.iconfinder.com/icons/3417099/carbon_structure_geometric_pattern_graphene_technology_hexagonal_lattice_molecular_structure_icon
 
<https://www.iconfinder.com/icons/3417099/carbon_structure_geometric_pattern_graphene_technology_hexagonal_lattice_molecular_structure_icon>),
 initially in 2D, however it should be extensible to 3D in the Z direction by 
layering these configurations on top of one another. They are not necessarily 
layered nicely, i.e. having one layer directly above the other, but should be 
able to handle offsets in the X or Y directions.
2. A “Cell” is a pair of atoms, so in the above link 2 connected circles 
represents 1 cell.
3. Connectivity between cells is always structured.
4. The mesh should only be interpolated (in the DMPlex sense) once, i.e. I need 
the 2 atom “cell" to store some geometric information about its internal bond.
5. Computational stencil should always be pointing “outwards”, i.e. it should 
not loop back on itself.
6. The computational kernel is a band-diagonal Hamiltonian matrix generated 
from the tight binding wave function (function of vectors between atoms, some 
known constants, and stencil size)

Granted some of these are not necessarily things that PETSc should facilitate 
on its own (most likely point #4 and #5) but there may be DM implementations 
that make writing this by hand easier than others. From looking into this some 
potential contenders I identified were DMNetwork, (a modified) DMDA, DMStag, 
DMPlex, or DMMOAB, but I welcome any and all input here!

Best regards,

Jacob Faibussowitsch
(Jacob Fai - booss - oh - vitch)
Cell: (312) 694-3391

Reply via email to