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

Streamline what is needed to create a new material #620

Open
baagaard-usgs opened this issue Jun 17, 2023 · 1 comment
Open

Streamline what is needed to create a new material #620

baagaard-usgs opened this issue Jun 17, 2023 · 1 comment
Assignees

Comments

@baagaard-usgs
Copy link
Contributor

baagaard-usgs commented Jun 17, 2023

Description

Adding a new material, bulk rheology, fault kinematic source time function, or fault friction model involves adding several files. We need to redesign the code so that it is much easier to create a new material, etc.

Desired Solution

The ideal solution would be a user supplies kernels (pointwise functions) with a minimal amount of other code along with a parameter file that describes the auxiliary fields, derived fields, solution fields, etc. We should have code that implements the rest of the necessary functionality.

Additional context

Faults add complications because we have components like an arbitrary number of earthquake sources or an arbitrary number of traction perturbations.

@baagaard-usgs
Copy link
Contributor Author

A new "material" (governing equation) requires the following:

  1. Solution fields
  • Name, description, discretization
  1. Auxiliary fields
  • Name, description, discretization, how to compute from spatial database
  1. Diagnostic fields (optional)
  • Name, description, discretization, kernels
  1. Derived fields (optional)
  • Name, description, discretization, how to compute from auxiliary field and solution field
  1. Kernels for computing residual
  • field, equation part, kernel
  • interface kernels
  1. Kernels for computing Jacobian
  • field i, field j, equation part, kernel
  • interface kernels
  1. Kernels for updating state variables
  2. Kernels for computing derived fields
  3. Kernels for computing diagnostic fields
  4. Default solver parameters (serial and parallel)

Rather than description and discretization information for each category of fields, we can provide a combined pool of description and discretization information that is used within the implementation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant