1*3d8e8822SJeremy L Thompson // Copyright (c) 2017-2022, Lawrence Livermore National Security, LLC and other CEED contributors. 2*3d8e8822SJeremy L Thompson // All Rights Reserved. See the top-level LICENSE and NOTICE files for details. 35754ecacSJeremy L Thompson // 4*3d8e8822SJeremy L Thompson // SPDX-License-Identifier: BSD-2-Clause 55754ecacSJeremy L Thompson // 6*3d8e8822SJeremy L Thompson // This file is part of CEED: http://github.com/ceed 75754ecacSJeremy L Thompson 85754ecacSJeremy L Thompson /// @file 95754ecacSJeremy L Thompson /// Linear elasticity manufactured solution true solution for solid mechanics example using PETSc 105754ecacSJeremy L Thompson 115754ecacSJeremy L Thompson #ifndef MANUFACTURED_TRUE_H 125754ecacSJeremy L Thompson #define MANUFACTURED_TRUE_H 135754ecacSJeremy L Thompson 145754ecacSJeremy L Thompson #include <math.h> 155754ecacSJeremy L Thompson 165754ecacSJeremy L Thompson // ----------------------------------------------------------------------------- 175754ecacSJeremy L Thompson // True solution for linear elasticity manufactured solution 185754ecacSJeremy L Thompson // ----------------------------------------------------------------------------- 195754ecacSJeremy L Thompson CEED_QFUNCTION(MMSTrueSoln)(void *ctx, const CeedInt Q, 205754ecacSJeremy L Thompson const CeedScalar *const *in, 215754ecacSJeremy L Thompson CeedScalar *const *out) { 225754ecacSJeremy L Thompson // Inputs 235754ecacSJeremy L Thompson const CeedScalar *coords = in[0]; 245754ecacSJeremy L Thompson 255754ecacSJeremy L Thompson // Outputs 265754ecacSJeremy L Thompson CeedScalar *true_soln = out[0]; 275754ecacSJeremy L Thompson 285754ecacSJeremy L Thompson // Quadrature Point Loop 295754ecacSJeremy L Thompson CeedPragmaSIMD 305754ecacSJeremy L Thompson for (CeedInt i=0; i<Q; i++) { 315754ecacSJeremy L Thompson // Setup 325754ecacSJeremy L Thompson CeedScalar x = coords[i+0*Q], y = coords[i+1*Q], z = coords[i+2*Q]; 335754ecacSJeremy L Thompson 345754ecacSJeremy L Thompson // True solution 355754ecacSJeremy L Thompson // -- Component 1 365754ecacSJeremy L Thompson true_soln[i+0*Q] = exp(2*x)*sin(3*y)*cos(4*z)/1e8; 375754ecacSJeremy L Thompson 385754ecacSJeremy L Thompson // -- Component 2 395754ecacSJeremy L Thompson true_soln[i+1*Q] = exp(3*y)*sin(4*z)*cos(2*x)/1e8; 405754ecacSJeremy L Thompson 415754ecacSJeremy L Thompson // -- Component 3 425754ecacSJeremy L Thompson true_soln[i+2*Q] = exp(4*z)*sin(2*x)*cos(3*y)/1e8; 435754ecacSJeremy L Thompson 445754ecacSJeremy L Thompson } // End of Quadrature Point Loop 455754ecacSJeremy L Thompson 465754ecacSJeremy L Thompson return 0; 475754ecacSJeremy L Thompson } 485754ecacSJeremy L Thompson // ----------------------------------------------------------------------------- 495754ecacSJeremy L Thompson 505754ecacSJeremy L Thompson #endif // End MANUFACTURED_TRUE_H 51