Skip to content

Conversation

@TheBEllis
Copy link
Collaborator

Equation system functionality is now in the ThermoMech example. This might help with further steady state implementations as I believe all the examples using EquationSystem right now are time dependent. It looks like a bit of an nasty PR, but a lot of the changes are just adding additional includes to files like kernels.hpp:)

Things that you might want changing before merge

Kernel names

  • MixedWeakDivergenceKernel represents the mixed bilinear form ($u, \nabla \cdot v$)
    • The test space can be a vector valued FE space composed of copies of a scalar FE space
  • DomainDivergenceLFKernel represents the linear form ($\nabla \cdot v, f$)
    • Once again, for when the test space is made up on multiple H1 FE spaces
  • LinearElasticityKernel is a hephaestus::kernel implementation of the provided mfem::ElasticityIntegrator
  • DomainLFKernel is a hephaestus::kernel implementation of the provided mfem::DomainLFIntegrator

Changes to SteadyStateProblemBuilder, and EquationSystemOperator

  • I had to change/ implement some methods in the SteadyStateProblemBuilder to get it working with the EquationSystem
  • Most notable is the InitialiseKernels method, which now calls the EquationSystem::Init method
  • This matches the behaviour of the TimeDomainProblemBuilder, but may mess with the behavoir of the currently implemented steady state solves that don't use an equation system?
  • Had to edit EquationSystemOperator::SetGridFunctions() so that state_var_names get set from EquationSystem::var_names
  • Also implemented EquationSystemOperator::SetEquationSystem() method, which is essentially copied from TimeDomainEquationSystemOperator::SetEquationSystem

Integrators

  • I have added an integrators directory into the src directory to store the necessary integrators for the thermal expansion solve. I think ideally these should be a PR for mfem one day as I see no draw back of having as many integrators as possible in MFEM natively, but for now they are here.

Coefficient Setup in Thermal Expansion Formulation

  • The coefficient setup in thermal_expansion_formulation.cpp is a bit nasty at the moment.
  • Many different product and sum coefficients are required to form the necessary coefficients to be passed to the kernels.
  • However none of this is exposed to the user on the apollo side, they only need to input the necessary material and thermal expansion parameters, same as it would be in MOOSE

…d added DomainH1Div linear form integrator to integrators
…ansion example. Currently only works with one variable however
@TheBEllis TheBEllis self-assigned this Dec 4, 2023
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.

2 participants