https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Functions
sma_memory.C File Reference

Go to the source code of this file.

Functions

void uexternaldb_ (int *LOP, int *, Real[], Real *, int *KSTEP, int *KINC)
 

Function Documentation

◆ uexternaldb_()

void uexternaldb_ ( int LOP,
int ,
Real  [],
Real *  ,
int KSTEP,
int KINC 
)

Definition at line 19 of file sma_memory.C.

21{
22 const bool threaded = getnumthreads_() > 1;
23
24 switch (*LOP)
25 {
26 // beginning of the simulation
27 case 0:
28 {
29 Real * fa = threaded ? SMALocalFloatArrayCreate(7, 5, 1.1) : SMAFloatArrayCreate(7, 5, 1.1);
30 Real fasum = 0.0;
31 for (int i = 0; i < 5; ++i)
32 fasum += fa[i];
33
34 // test wrong handle error based on kstep setting
35 Real * fa2 = threaded ? SMALocalFloatArrayAccess(*KSTEP == 1 ? 2 : 7)
36 : SMAFloatArrayAccess(*KSTEP == 1 ? 2 : 7);
37 if (fa != fa2)
38 mooseError("Mismatching pointers");
39
40 int * ia = threaded ? SMALocalIntArrayCreate(67, 39, 9) : SMAIntArrayCreate(67, 39, 9);
41 int iasum = 0;
42 for (int i = 0; i < 39; ++i)
43 iasum += ia[i];
44
45 // test wrong handle error based on kstep setting
46 int * ia2 = threaded ? SMALocalIntArrayAccess(*KSTEP == 2 ? 13 : 67)
47 : SMAIntArrayAccess(*KSTEP == 2 ? 13 : 67);
48 if (ia != ia2)
49 mooseError("Mismatching pointers");
50
51 if (get_thread_id_() == 0)
52 Moose::out << *LOP << "lop " << fasum << ' '
53 << (threaded ? SMALocalFloatArraySize(7) : SMAFloatArraySize(7)) << ' ' << iasum
54 << ' ' << (threaded ? SMALocalIntArraySize(67) : SMAIntArraySize(67)) << '\n';
55 break;
56 }
57
58 // beginning of the timestep
59 case 1:
60 {
61 Real * fa = threaded ? SMALocalFloatArrayAccess(7) : SMAFloatArrayAccess(7);
62 for (int i = 0; i < (threaded ? SMALocalFloatArraySize(7) : SMAFloatArraySize(7)); ++i)
63 fa[i] += i + *KINC;
64
65 int * ia = threaded ? SMALocalIntArrayAccess(67) : SMAIntArrayAccess(67);
66 for (int i = 0; i < (threaded ? SMALocalIntArraySize(67) : SMAIntArraySize(67)); ++i)
67 ia[i] += i + *KINC;
68 break;
69 }
70
71 // end of the simulation
72 case 3:
73 {
74 Real * fa = threaded ? SMALocalFloatArrayAccess(7) : SMAFloatArrayAccess(7);
75 Real fasum = 0.0;
76 for (int i = 0; i < (threaded ? SMALocalFloatArraySize(7) : SMAFloatArraySize(7)); ++i)
77 fasum += fa[i] + 0;
78 if (threaded)
80 else
82
83 int iasum = 0;
84 int * ia = threaded ? SMALocalIntArrayAccess(67) : SMAIntArrayAccess(67);
85 for (int i = 0; i < (threaded ? SMALocalIntArraySize(67) : SMAIntArraySize(67)); ++i)
86 iasum += ia[i];
87
88 if (threaded)
90 else
92
93 if (get_thread_id_() == 0)
94 Moose::out << *LOP << "lop " << fasum << ' ' << iasum << ' ' << '\n';
95 break;
96 }
97 }
98}
void mooseError(Args &&... args)
void SMALocalIntArrayDelete(int id)
int * SMAIntArrayAccess(int id)
int * SMAIntArrayCreate(int id, int len, int val=0)
int SMALocalFloatArraySize(int id)
int SMAIntArraySize(int id)
int * SMALocalIntArrayCreate(int id, int len, int val=0)
void SMALocalFloatArrayDelete(int id)
int SMALocalIntArraySize(int id)
double * SMAFloatArrayAccess(int id)
int * SMALocalIntArrayAccess(int id)
int SMAFloatArraySize(int id)
void SMAIntArrayDelete(int id)
double * SMAFloatArrayCreate(int id, int len, double val=0.0)
void SMAFloatArrayDelete(int id)
double * SMALocalFloatArrayCreate(int id, int len, double val=0.0)
double * SMALocalFloatArrayAccess(int id)
int getnumthreads_()
Definition AbaqusUtils.C:52
int get_thread_id_()
Definition AbaqusUtils.C:58
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real