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 21 of file sma_memory.C.

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