GPU accelerated finite element based electrodynamics simulation.
Written for research at Liquid Crystal Institute @ Kent State University, Kent OH
** Andrew Konya ** Michael Varga
- Build using
make
- This compiles all object files and links to executable in builds/.
- The name of the build is set by $(BUILDNAME) found on the first like of
makefile
- The executable takes cmdline arguments to set parameters in the simulation. It also accepts a parameters file to read the values from.
- An example parameters file
params.json
is provided. It reads standard json or the simplified json found in the example. - A list of available cmdline options and parameters are shown below...
{name} : {type} : {description}
density : float : Sets the material density of the elastomer
alpha : float : Sets the compling stength of nematic order to stress
cxxxx : float : Primary elastic constant
cxxyy : float : Secondary elastic constant
cxyxy : float : Elastic constant
{name} : {type} : {description}
nsteps : int : The number of timesteps to run the simulation
dt : float : The length of time steps
framerate : int : how often to print output files
classstruct.h
defines both TetArra
y and NodeArray
classes which are used to optimize the mesh on the CPU side.
getmesh.h
parses the mesh (get_mesh
), as well as optimizes the mesh ordering (gorder_tet
).
packdata.h
copies all mesh and initial condition data into arrays which can be coppied to the GPU
rundynamics.h
handles the entire dynamics loop, including the invocation of the GPU side kernels.
gpuForce.h
is the GPU side Kernel to handle force calculations, and uses:
forcecalc.h
to do the actual force calculationread_dev_data.h
to get global GPU data needed for the force calculationgetQ.h
is used to get the LC director for a given elementsendForce.h
sends the forces calculated within the kernel to global memory
updateKernel.h
is the GPU kernel to handle updating node positions and uses:
update_r.h
to do the actual update equation calculationssumForce.h
is used to read and sum forces stored in global memory