https://mooseframework.inl.gov
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 }
int SMAFloatArraySize(int id)
Definition: AbaqusUtils.C:295
double * SMALocalFloatArrayAccess(int id)
Definition: AbaqusUtils.C:277
void mooseError(Args &&... args)
int get_thread_id_()
Definition: AbaqusUtils.C:58
void SMAIntArrayDelete(int id)
Definition: AbaqusUtils.C:322
int SMALocalFloatArraySize(int id)
Definition: AbaqusUtils.C:311
void SMAFloatArrayDelete(int id)
Definition: AbaqusUtils.C:329
double * SMAFloatArrayCreate(int id, int len, double val=0.0)
int * SMALocalIntArrayCreate(int id, int len, int val=0)
Definition: AbaqusUtils.C:232
double * SMAFloatArrayAccess(int id)
Definition: AbaqusUtils.C:261
void SMALocalIntArrayDelete(int id)
Definition: AbaqusUtils.C:336
double * SMALocalFloatArrayCreate(int id, int len, double val=0.0)
int getnumthreads_()
Definition: AbaqusUtils.C:52
int SMAIntArraySize(int id)
Definition: AbaqusUtils.C:288
void SMALocalFloatArrayDelete(int id)
Definition: AbaqusUtils.C:345
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
int * SMALocalIntArrayAccess(int id)
Definition: AbaqusUtils.C:268
int * SMAIntArrayCreate(int id, int len, int val=0)
Definition: AbaqusUtils.C:214
int SMALocalIntArraySize(int id)
Definition: AbaqusUtils.C:302
int * SMAIntArrayAccess(int id)
Definition: AbaqusUtils.C:254