xref: /honee/problems/bc_slip.c (revision 9b103f75867128bb395d4431a2dd4da8eacd1da9)
1dc936754SJeremy L Thompson // Copyright (c) 2017-2024, Lawrence Livermore National Security, LLC and other CEED contributors.
29ed3d70dSJames Wright // All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
39ed3d70dSJames Wright //
49ed3d70dSJames Wright // SPDX-License-Identifier: BSD-2-Clause
59ed3d70dSJames Wright //
69ed3d70dSJames Wright // This file is part of CEED:  http://github.com/ceed
79ed3d70dSJames Wright 
89ed3d70dSJames Wright /// @file
99ed3d70dSJames Wright /// Utility functions for setting up slip boundary condition
109ed3d70dSJames Wright 
119ed3d70dSJames Wright #include "../qfunctions/bc_slip.h"
129ed3d70dSJames Wright 
139ed3d70dSJames Wright #include <ceed.h>
149ed3d70dSJames Wright #include <petscdm.h>
159ed3d70dSJames Wright 
169ed3d70dSJames Wright #include "../navierstokes.h"
179ed3d70dSJames Wright #include "../qfunctions/newtonian_types.h"
189ed3d70dSJames Wright 
19991aef52SJames Wright PetscErrorCode SlipBCSetup(ProblemData problem, DM dm, void *ctx, CeedQFunctionContext newtonian_ig_qfctx) {
209ed3d70dSJames Wright   User user = *(User *)ctx;
219ed3d70dSJames Wright   Ceed ceed = user->ceed;
229ed3d70dSJames Wright 
239ed3d70dSJames Wright   PetscFunctionBeginUser;
249ed3d70dSJames Wright   switch (user->phys->state_var) {
259ed3d70dSJames Wright     case STATEVAR_CONSERVATIVE:
269ed3d70dSJames Wright       problem->apply_slip.qfunction              = Slip_Conserv;
279ed3d70dSJames Wright       problem->apply_slip.qfunction_loc          = Slip_Conserv_loc;
289ed3d70dSJames Wright       problem->apply_slip_jacobian.qfunction     = Slip_Jacobian_Conserv;
299ed3d70dSJames Wright       problem->apply_slip_jacobian.qfunction_loc = Slip_Jacobian_Conserv_loc;
309ed3d70dSJames Wright       break;
319ed3d70dSJames Wright     case STATEVAR_PRIMITIVE:
329ed3d70dSJames Wright       problem->apply_slip.qfunction              = Slip_Prim;
339ed3d70dSJames Wright       problem->apply_slip.qfunction_loc          = Slip_Prim_loc;
349ed3d70dSJames Wright       problem->apply_slip_jacobian.qfunction     = Slip_Jacobian_Prim;
359ed3d70dSJames Wright       problem->apply_slip_jacobian.qfunction_loc = Slip_Jacobian_Prim_loc;
369ed3d70dSJames Wright       break;
37*9b103f75SJames Wright     case STATEVAR_ENTROPY:
38*9b103f75SJames Wright       problem->apply_slip.qfunction              = Slip_Entropy;
39*9b103f75SJames Wright       problem->apply_slip.qfunction_loc          = Slip_Entropy_loc;
40*9b103f75SJames Wright       problem->apply_slip_jacobian.qfunction     = Slip_Jacobian_Entropy;
41*9b103f75SJames Wright       problem->apply_slip_jacobian.qfunction_loc = Slip_Jacobian_Entropy_loc;
42*9b103f75SJames Wright       break;
439ed3d70dSJames Wright   }
449ed3d70dSJames Wright 
459ed3d70dSJames Wright   PetscCallCeed(ceed, CeedQFunctionContextReferenceCopy(newtonian_ig_qfctx, &problem->apply_slip.qfunction_context));
469ed3d70dSJames Wright   PetscCallCeed(ceed, CeedQFunctionContextReferenceCopy(newtonian_ig_qfctx, &problem->apply_slip_jacobian.qfunction_context));
479ed3d70dSJames Wright   PetscFunctionReturn(PETSC_SUCCESS);
489ed3d70dSJames Wright }
49