Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Templated Compute Kernel Foundation #96

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open

Conversation

manavbhatia
Copy link
Member

The purpose of the code in this PR is to provide a foundation to enable the following features in MAST:

  • Automatic differentiation evaluation of sensitivity and Jacobian quantities
  • Complex-step evaluation of sensitivity and Jacobian quantities
  • Shape sensitivity analysis
  • Plug-and-play functionality to add/remove new physics/terms in finite-element variational form
  • Quadrature/material point evaluations of nonlinear material models, which will be implemented as the compute-kernel derived classes.
  • Minimize the reinitialization of FE and Quadrature objects for computation of element residual/matrix quantities.
  • Maximize reuse of computed quantities and minimize movement of data in memory.
  • Future support for GPGPUs though Kokkos. This requires the adoption of concepts of memory-views and definition of functions that serve as kernels that can execute in parallel on multiple CPU/GPU cores. (The modifications in this PR do not support this, but support for this will be added in future).

This requires the definition of a templated compute kernel, currently implemented in the compute_kernel.h file. A number of additional classes have been defined here, which will be moved to independent files in forthcoming commits. Currently, only a skeleton implementation is included to hash out the API for various classes/functionality.

A skeleton implementation is included for strain energy kernel for elasticity computations and a code to set this up. These classes are instantiated for different combinations of variable types in example 6.

…mplex-step and auto-diff sensitivity analysis.

-- Skeleton implementation of strain energy kernel for elasticity computations and a code to set this up. These classes are instantiated for different combinations of variable types in example 6.
-- Multiple bug-fixes.
-- Templatized FEOperatorMatrix
-- Added classes for strain energy, isotropic material property.
…ent basis functions.

-- Added a new elem operations class to replace the nonlinear implicit assembly operations for structural analysis.
…ture and derivative computations.

-- implementation of complex-step derivative for computation of element Jacobian.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant