xref: /libCEED/examples/solids/problems/linear.c (revision 63d3996f1f03b416d5b23781eb3edce20782c3b1)
1 #include <ceed.h>
2 #include "../include/structs.h"
3 #include "../include/setup-libceed.h"
4 #include "../problems/problems.h"
5 #include "../problems/neo-hookean.h"
6 #include "../qfunctions/common.h"
7 #include "../qfunctions/linear.h"
8 #include "../qfunctions/manufactured-true.h"
9 
10 ProblemData linear_elasticity = {
11   .setup_geo = SetupGeo,
12   .setup_geo_loc = SetupGeo_loc,
13   .q_data_size = 10,
14   .quadrature_mode = CEED_GAUSS,
15   .residual = ElasLinearF,
16   .residual_loc = ElasLinearF_loc,
17   .number_fields_stored = 0,
18   .jacobian = ElasLineardF,
19   .jacobian_loc = ElasLineardF_loc,
20   .energy = ElasLinearEnergy,
21   .energy_loc = ElasLinearEnergy_loc,
22   .diagnostic = ElasLinearDiagnostic,
23   .diagnostic_loc = ElasLinearDiagnostic_loc,
24   .true_soln = MMSTrueSoln,
25   .true_soln_loc = MMSTrueSoln_loc,
26 };
27 
28 PetscErrorCode SetupLibceedFineLevel_ElasLinear(DM dm, DM dm_energy,
29     DM dm_diagnostic, Ceed ceed, AppCtx app_ctx, CeedQFunctionContext phys_ctx,
30     PetscInt fine_level, PetscInt num_comp_u, PetscInt U_g_size,
31     PetscInt U_loc_size, CeedVector force_ceed, CeedVector neumann_ceed,
32     CeedData *data) {
33   PetscErrorCode ierr;
34 
35   PetscFunctionBegin;
36 
37   ierr = SetupLibceedFineLevel(dm, dm_energy, dm_diagnostic, ceed, app_ctx,
38                                phys_ctx, linear_elasticity,
39                                fine_level, num_comp_u, U_g_size, U_loc_size,
40                                force_ceed, neumann_ceed, data); CHKERRQ(ierr);
41 
42   PetscFunctionReturn(0);
43 };
44 
45 PetscErrorCode SetupLibceedLevel_ElasLinear(DM dm, Ceed ceed, AppCtx app_ctx,
46     PetscInt level, PetscInt num_comp_u, PetscInt U_g_size, PetscInt U_loc_size,
47     CeedVector fine_mult, CeedData *data) {
48   PetscErrorCode ierr;
49 
50   PetscFunctionBegin;
51 
52   ierr = SetupLibceedLevel(dm, ceed, app_ctx, linear_elasticity,
53                            level, num_comp_u, U_g_size, U_loc_size, fine_mult, data);
54   CHKERRQ(ierr);
55 
56   PetscFunctionReturn(0);
57 };
58