1*5aed82e4SJeremy L Thompson // Copyright (c) 2017-2024, Lawrence Livermore National Security, LLC and other CEED contributors. 29f844368SJames Wright // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 39f844368SJames Wright // 49f844368SJames Wright // SPDX-License-Identifier: BSD-2-Clause 59f844368SJames Wright // 69f844368SJames Wright // This file is part of CEED: http://github.com/ceed 79f844368SJames Wright 89f844368SJames Wright /// @file 99f844368SJames Wright /// Utility functions for setting up slip boundary condition 109f844368SJames Wright 119f844368SJames Wright #include "../qfunctions/bc_slip.h" 129f844368SJames Wright 139f844368SJames Wright #include <ceed.h> 149f844368SJames Wright #include <petscdm.h> 159f844368SJames Wright 169f844368SJames Wright #include "../navierstokes.h" 179f844368SJames Wright #include "../qfunctions/newtonian_types.h" 189f844368SJames Wright 199f844368SJames Wright PetscErrorCode SlipBCSetup(ProblemData *problem, DM dm, void *ctx, CeedQFunctionContext newtonian_ig_qfctx) { 209f844368SJames Wright User user = *(User *)ctx; 219f844368SJames Wright Ceed ceed = user->ceed; 229f844368SJames Wright 239f844368SJames Wright PetscFunctionBeginUser; 249f844368SJames Wright switch (user->phys->state_var) { 259f844368SJames Wright case STATEVAR_CONSERVATIVE: 269f844368SJames Wright problem->apply_slip.qfunction = Slip_Conserv; 279f844368SJames Wright problem->apply_slip.qfunction_loc = Slip_Conserv_loc; 289f844368SJames Wright problem->apply_slip_jacobian.qfunction = Slip_Jacobian_Conserv; 299f844368SJames Wright problem->apply_slip_jacobian.qfunction_loc = Slip_Jacobian_Conserv_loc; 309f844368SJames Wright break; 319f844368SJames Wright case STATEVAR_PRIMITIVE: 329f844368SJames Wright problem->apply_slip.qfunction = Slip_Prim; 339f844368SJames Wright problem->apply_slip.qfunction_loc = Slip_Prim_loc; 349f844368SJames Wright problem->apply_slip_jacobian.qfunction = Slip_Jacobian_Prim; 359f844368SJames Wright problem->apply_slip_jacobian.qfunction_loc = Slip_Jacobian_Prim_loc; 369f844368SJames Wright break; 379f844368SJames Wright } 389f844368SJames Wright 399f844368SJames Wright PetscCallCeed(ceed, CeedQFunctionContextReferenceCopy(newtonian_ig_qfctx, &problem->apply_slip.qfunction_context)); 409f844368SJames Wright PetscCallCeed(ceed, CeedQFunctionContextReferenceCopy(newtonian_ig_qfctx, &problem->apply_slip_jacobian.qfunction_context)); 419f844368SJames Wright PetscFunctionReturn(PETSC_SUCCESS); 429f844368SJames Wright } 43