Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
utilities.f90
Go to the documentation of this file.
1 ! *********************************************************************
2 ! * Rocstar Simulation Suite *
3 ! * Copyright@2015, Illinois Rocstar LLC. All rights reserved. *
4 ! * *
5 ! * Illinois Rocstar LLC *
6 ! * Champaign, IL *
7 ! * www.illinoisrocstar.com *
8 ! * sales@illinoisrocstar.com *
9 ! * *
10 ! * License: See LICENSE file in top level of distribution package or *
11 ! * http://opensource.org/licenses/NCSA *
12 ! *********************************************************************
13 ! *********************************************************************
14 ! * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
15 ! * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *
16 ! * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
17 ! * NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR *
18 ! * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
19 ! * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
20 ! * Arising FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
21 ! * USE OR OTHER DEALINGS WITH THE SOFTWARE. *
22 ! *********************************************************************
23  SUBROUTINE com_set_true( i)
24  LOGICAL i
25  i = .true.
26  END SUBROUTINE com_set_true
27 
28  SUBROUTINE com_set_false( i)
29  LOGICAL i
30  i = .false.
31  END SUBROUTINE com_set_false
32 
33  SUBROUTINE com_copy_string( str_frm, len_frm, str_to, len_to)
34  INTEGER, INTENT(IN) :: len_frm, len_to
35 
36  CHARACTER( len_frm), INTENT(IN) :: str_frm
37  CHARACTER( len_to), INTENT(OUT) :: str_to
38 
39  str_to = str_frm
40  END SUBROUTINE com_copy_string
41 
42  SUBROUTINE com_mapptr_chr1d( p, tonull, x, n)
43  IMPLICIT NONE
44 
45  CHARACTER, POINTER :: p(:)
46  INTEGER, INTENT(IN) :: tonull
47  INTEGER, INTENT(IN) :: n
48  CHARACTER, TARGET :: x(n)
49 
50  IF ( tonull /= 0) THEN
51  nullify( p)
52  ELSE
53  p => x
54  END IF
55 
56  END SUBROUTINE com_mapptr_chr1d
57 
58  SUBROUTINE com_mapptr_int0d( p, tonull, x)
59 
60  IMPLICIT NONE
61 
62  INTEGER, POINTER :: p
63  INTEGER, INTENT(IN) :: tonull
64  INTEGER, TARGET :: x
65 
66  IF ( tonull /= 0) THEN
67  nullify( p)
68  ELSE
69  p => x
70  END IF
71 
72  END SUBROUTINE com_mapptr_int0d
73 
74  SUBROUTINE com_mapptr_int1d( p, tonull, x, n)
75 
76  IMPLICIT NONE
77 
78  INTEGER, POINTER :: p(:)
79  INTEGER, INTENT(IN) :: tonull
80  INTEGER, INTENT(IN) :: n
81  INTEGER, TARGET :: x(n)
82 
83  IF ( tonull /= 0) THEN
84  nullify( p)
85  ELSE
86  p => x
87  END IF
88 
89  END SUBROUTINE com_mapptr_int1d
90 
91  SUBROUTINE com_mapptr_int2d( p, tonull, x, n1, n2)
92 
93  IMPLICIT NONE
94 
95  INTEGER, POINTER :: p(:, :)
96  INTEGER, INTENT(IN) :: tonull
97  INTEGER, INTENT(IN) :: n1, n2
98  INTEGER, TARGET :: x(n1, n2)
99 
100  IF ( tonull /= 0) THEN
101  nullify( p)
102  ELSE
103  p => x
104  END IF
105 
106  END SUBROUTINE com_mapptr_int2d
107 
108  SUBROUTINE com_mapptr_int3d( p, tonull, x, n1, n2, n3)
109 
110  IMPLICIT NONE
111 
112  INTEGER, POINTER :: p(:, :, :)
113  INTEGER, INTENT(IN) :: tonull
114  INTEGER, INTENT(IN) :: n1, n2, n3
115  INTEGER, TARGET :: x(n1, n2, n3)
116 
117  IF ( tonull /= 0) THEN
118  nullify( p)
119  ELSE
120  p => x
121  END IF
122 
123  END SUBROUTINE com_mapptr_int3d
124 
125 
126  SUBROUTINE com_mapptr_flt0d( p, tonull, x)
127 
128  IMPLICIT NONE
129 
130  INTERFACE
131  SUBROUTINE com_map_cptr_flt( x, y)
132  REAL, INTENT(INOUT) :: x, y
133  END SUBROUTINE com_map_cptr_flt
134  END INTERFACE
135 
136  REAL, POINTER :: p
137  INTEGER, INTENT(IN) :: tonull
138  REAL, TARGET :: x
139 
140  IF ( tonull /= 0) THEN
141  nullify( p)
142  ELSE
143  p => x
144  END IF
145 
146  END SUBROUTINE com_mapptr_flt0d
147 
148  SUBROUTINE com_mapptr_flt1d( p, tonull, x, n)
149 
150  IMPLICIT NONE
151 
152  REAL, POINTER :: p(:)
153  INTEGER, INTENT(IN) :: tonull
154  INTEGER, INTENT(IN) :: n
155  REAL, TARGET :: x(n)
156 
157  IF ( tonull /= 0) THEN
158  nullify( p)
159  ELSE
160  p => x
161  END IF
162 
163  END SUBROUTINE com_mapptr_flt1d
164 
165  SUBROUTINE com_mapptr_flt2d( p, tonull, x, n1, n2)
166 
167  IMPLICIT NONE
168 
169  REAL, POINTER :: p(:, :)
170  INTEGER, INTENT(IN) :: tonull
171  INTEGER, INTENT(IN) :: n1, n2
172  REAL, TARGET :: x(n1, n2)
173 
174  IF ( tonull /= 0) THEN
175  nullify( p)
176  ELSE
177  p => x
178  END IF
179 
180  END SUBROUTINE com_mapptr_flt2d
181 
182  SUBROUTINE com_mapptr_flt3d( p, tonull, x, n1, n2, n3)
183 
184  IMPLICIT NONE
185 
186  REAL, POINTER :: p(:, :, :)
187  INTEGER, INTENT(IN) :: tonull
188  INTEGER, INTENT(IN) :: n1, n2, n3
189  REAL, TARGET :: x(n1, n2, n3)
190 
191  IF ( tonull /= 0) THEN
192  nullify( p)
193  ELSE
194  p => x
195  END IF
196 
197  END SUBROUTINE com_mapptr_flt3d
198 
199 
200  SUBROUTINE com_mapptr_dbl0d( p, tonull, x)
201 
202  IMPLICIT NONE
203 
204  INTERFACE
205  SUBROUTINE com_map_cptr_dbl( x, y)
206  DOUBLE PRECISION, INTENT(INOUT) :: x, y
207  END SUBROUTINE com_map_cptr_dbl
208  END INTERFACE
209 
210  DOUBLE PRECISION, POINTER :: p
211  INTEGER, INTENT(IN) :: tonull
212  DOUBLE PRECISION, TARGET :: x
213 
214  IF ( tonull /= 0) THEN
215  nullify( p)
216  ELSE
217  p => x
218  END IF
219 
220  END SUBROUTINE com_mapptr_dbl0d
221 
222  SUBROUTINE com_mapptr_dbl1d( p, tonull, x, n)
223 
224  IMPLICIT NONE
225 
226  DOUBLE PRECISION, POINTER :: p(:)
227  INTEGER, INTENT(IN) :: tonull
228  INTEGER, INTENT(IN) :: n
229  DOUBLE PRECISION, TARGET :: x(n)
230 
231  IF ( tonull /= 0) THEN
232  nullify( p)
233  ELSE
234  p => x
235  END IF
236 
237  END SUBROUTINE com_mapptr_dbl1d
238 
239  SUBROUTINE com_mapptr_dbl2d( p, tonull, x, n1, n2)
240 
241  IMPLICIT NONE
242 
243  DOUBLE PRECISION, POINTER :: p(:, :)
244  INTEGER, INTENT(IN) :: tonull
245  INTEGER, INTENT(IN) :: n1, n2
246  DOUBLE PRECISION, TARGET :: x(n1, n2)
247 
248  IF ( tonull /= 0) THEN
249  nullify( p)
250  ELSE
251  p => x
252  END IF
253 
254  END SUBROUTINE com_mapptr_dbl2d
255 
256  SUBROUTINE com_mapptr_dbl3d( p, tonull, x, n1, n2, n3)
257 
258  IMPLICIT NONE
259 
260  DOUBLE PRECISION, POINTER :: p(:, :, :)
261  INTEGER, INTENT(IN) :: tonull
262  INTEGER, INTENT(IN) :: n1, n2, n3
263  DOUBLE PRECISION, TARGET :: x(n1, n2, n3)
264 
265  IF ( tonull /= 0) THEN
266  nullify( p)
267  ELSE
268  p => x
269  END IF
270 
271  END SUBROUTINE com_mapptr_dbl3d
272 
273  SUBROUTINE com_getptr_chr0d( p, x)
274  IMPLICIT NONE
275 
276  INTERFACE
277  SUBROUTINE com_map_cptr_chr( x, y)
278  CHARACTER, INTENT(INOUT) :: x, y
279  END SUBROUTINE com_map_cptr_chr
280  END INTERFACE
281 
282  CHARACTER, POINTER :: p
283  CHARACTER, TARGET :: x
284 
285  IF ( .NOT. ASSOCIATED( p)) THEN
286  CALL com_map_cptr_chr( x, x)
287  ELSE
288  CALL com_map_cptr_chr( p, x)
289  END IF
290 
291  END SUBROUTINE com_getptr_chr0d
292 
293  SUBROUTINE com_getptr_chr1d( p, x)
294  IMPLICIT NONE
295 
296  CHARACTER, POINTER :: p(:)
297  CHARACTER, TARGET :: x
298 
299  IF ( .NOT. ASSOCIATED( p)) THEN
300  CALL com_map_cptr( x, x)
301  ELSE
302  CALL com_map_cptr( p(lbound(p,1)), x)
303  END IF
304 
305  END SUBROUTINE com_getptr_chr1d
306 
307  SUBROUTINE com_getptr_int0d( p, x)
308  IMPLICIT NONE
309 
310  INTERFACE
311  SUBROUTINE com_map_cptr_int( x, y)
312  INTEGER, INTENT(INOUT) :: x, y
313  END SUBROUTINE com_map_cptr_int
314  END INTERFACE
315 
316  INTEGER, POINTER :: p
317  INTEGER, TARGET :: x
318 
319  IF ( .NOT. ASSOCIATED( p)) THEN
320  CALL com_map_cptr_int( x, x)
321  ELSE
322  CALL com_map_cptr_int( p, x)
323  END IF
324 
325  END SUBROUTINE com_getptr_int0d
326 
327  SUBROUTINE com_getptr_int1d( p, x)
328  IMPLICIT NONE
329 
330  INTEGER, POINTER :: p(:)
331  INTEGER, TARGET :: x
332 
333  IF ( .NOT. ASSOCIATED( p)) THEN
334  CALL com_map_cptr( x, x)
335  ELSE
336  CALL com_map_cptr( p(lbound(p,1)), x)
337  END IF
338 
339  END SUBROUTINE com_getptr_int1d
340 
341  SUBROUTINE com_getptr_int2d( p, x)
342  IMPLICIT NONE
343 
344  INTEGER, POINTER :: p(:,:)
345  INTEGER, TARGET :: x
346 
347  IF ( .NOT. ASSOCIATED( p)) THEN
348  CALL com_map_cptr( x, x)
349  ELSE
350  CALL com_map_cptr( p(lbound(p,1),lbound(p,2)), x)
351  END IF
352 
353  END SUBROUTINE com_getptr_int2d
354 
355  SUBROUTINE com_getptr_int3d( p, x)
356  IMPLICIT NONE
357 
358  INTEGER, POINTER :: p(:,:,:)
359  INTEGER, TARGET :: x
360 
361  IF ( .NOT. ASSOCIATED( p)) THEN
362  CALL com_map_cptr( x, x)
363  ELSE
364  CALL com_map_cptr( p(lbound(p,1),lbound(p,2),lbound(p,3)), x)
365  END IF
366 
367  END SUBROUTINE com_getptr_int3d
368 
369  SUBROUTINE com_getptr_flt0d( p, x)
370  IMPLICIT NONE
371 
372  REAL, POINTER :: p
373  REAL, TARGET :: x
374 
375  IF ( .NOT. ASSOCIATED( p)) THEN
376  CALL com_map_cptr_flt( x, x)
377  ELSE
378  CALL com_map_cptr_flt( p, x)
379  END IF
380 
381  END SUBROUTINE com_getptr_flt0d
382 
383  SUBROUTINE com_getptr_flt1d( p, x)
384  IMPLICIT NONE
385 
386  REAL, POINTER :: p(:)
387  REAL, TARGET :: x
388 
389  IF ( .NOT. ASSOCIATED( p)) THEN
390  CALL com_map_cptr( x, x)
391  ELSE
392  CALL com_map_cptr( p(lbound(p,1)), x)
393  END IF
394 
395  END SUBROUTINE com_getptr_flt1d
396 
397  SUBROUTINE com_getptr_flt2d( p, x)
398  IMPLICIT NONE
399 
400  REAL, POINTER :: p(:,:)
401  REAL, TARGET :: x
402 
403  IF ( .NOT. ASSOCIATED( p)) THEN
404  CALL com_map_cptr( x, x)
405  ELSE
406  CALL com_map_cptr( p(lbound(p,1),lbound(p,2)), x)
407  END IF
408 
409  END SUBROUTINE com_getptr_flt2d
410 
411  SUBROUTINE com_getptr_flt3d( p, x)
412  IMPLICIT NONE
413 
414  REAL, POINTER :: p(:,:,:)
415  REAL, TARGET :: x
416 
417  IF ( .NOT. ASSOCIATED( p)) THEN
418  CALL com_map_cptr( x, x)
419  ELSE
420  CALL com_map_cptr( p(lbound(p,1),lbound(p,2),lbound(p,3)), x)
421  END IF
422 
423  END SUBROUTINE com_getptr_flt3d
424 
425  SUBROUTINE com_getptr_dbl0d( p, x)
426  IMPLICIT NONE
427 
428  DOUBLE PRECISION, POINTER :: p
429  DOUBLE PRECISION, TARGET :: x
430 
431  IF ( .NOT. ASSOCIATED( p)) THEN
432  CALL com_map_cptr_dbl( x, x)
433  ELSE
434  CALL com_map_cptr_dbl( p, x)
435  END IF
436 
437  END SUBROUTINE com_getptr_dbl0d
438 
439  SUBROUTINE com_getptr_dbl1d( p, x)
440  IMPLICIT NONE
441 
442  DOUBLE PRECISION, POINTER :: p(:)
443  DOUBLE PRECISION, TARGET :: x
444 
445  IF ( .NOT. ASSOCIATED( p)) THEN
446  CALL com_map_cptr( x, x)
447  ELSE
448  CALL com_map_cptr( p(lbound(p,1)), x)
449  END IF
450 
451  END SUBROUTINE com_getptr_dbl1d
452 
453  SUBROUTINE com_getptr_dbl2d( p, x)
454  IMPLICIT NONE
455 
456  DOUBLE PRECISION, POINTER :: p(:,:)
457  DOUBLE PRECISION, TARGET :: x
458 
459  IF ( .NOT. ASSOCIATED( p)) THEN
460  CALL com_map_cptr( x, x)
461  ELSE
462  CALL com_map_cptr( p(lbound(p,1),lbound(p,2)), x)
463  END IF
464 
465  END SUBROUTINE com_getptr_dbl2d
466 
467  SUBROUTINE com_getptr_dbl3d( p, x)
468  IMPLICIT NONE
469 
470  DOUBLE PRECISION, POINTER :: p(:,:,:)
471  DOUBLE PRECISION, TARGET :: x
472 
473  IF ( .NOT. ASSOCIATED( p)) THEN
474  CALL com_map_cptr( x, x)
475  ELSE
476  CALL com_map_cptr( p(lbound(p,1),lbound(p,2),lbound(p,3)), x)
477  END IF
478 
479  END SUBROUTINE com_getptr_dbl3d
480 
481  SUBROUTINE com_settypeinfo(wrapper)
482  USE m_pointers
483  IMPLICIT NONE
484 
485  TYPE(data_wrapper), INTENT(OUT) :: wrapper
486  TYPE(data), ALLOCATABLE, TARGET :: dat(:)
487  INTEGER, ALLOCATABLE, TARGET :: a(:)
488  INTEGER :: i
489 
490  ALLOCATE(a(10))
491  ALLOCATE(dat(1))
492  wrapper%p_data => dat(1)
493  wrapper%p_data%a => a
494  wrapper%ibegin = 333331
495  wrapper%iend = 333332
496  wrapper%p_data%ibegin = 333333
497  wrapper%p_data%iend = 333334
498 
499  DO i = 1, 10
500  a(i) = i
501  END DO
502 
503  DEALLOCATE(a)
504  DEALLOCATE(dat)
505 
506  END SUBROUTINE com_settypeinfo
507 
508  SUBROUTINE com_chkptr_begin
509  IMPLICIT NONE
510  CHARACTER(17) :: str1
511  CHARACTER(33) :: str2
512  INTEGER, POINTER :: ptr1(:)
513  REAL, POINTER :: ptr2(:)
514 
515  INTERFACE
516  SUBROUTINE com_chkptr_c( stage, str1, ptr1, str2, ptr2)
517  CHARACTER(17), INTENT(IN) :: str1
518  CHARACTER(33), INTENT(IN) :: str2
519  INTEGER, POINTER :: ptr1(:)
520  REAL, POINTER :: ptr2(:)
521  INTEGER, INTENT(IN) :: stage
522  END SUBROUTINE com_chkptr_c
523  END INTERFACE
524 
525  ALLOCATE (ptr1(4))
526  ALLOCATE (ptr2(3))
527  CALL com_chkptr_c( 1, str1, ptr1, str2, ptr2)
528  END SUBROUTINE com_chkptr_begin
529 
530  SUBROUTINE com_chkptr_end( str1, ptr1, str2, ptr2)
531  IMPLICIT NONE
532  CHARACTER(17), INTENT(IN) :: str1
533  CHARACTER(33), INTENT(IN) :: str2
534  INTEGER, POINTER :: ptr1(:)
535  REAL, POINTER :: ptr2(:)
536 
537  INTERFACE
538  SUBROUTINE com_chkptr_c( stage, str2, ptr2, str1, ptr1)
539  CHARACTER(17), INTENT(IN) :: str1
540  CHARACTER(33), INTENT(IN) :: str2
541  INTEGER, POINTER :: ptr1(:)
542  REAL, POINTER :: ptr2(:)
543  INTEGER, INTENT(IN) :: stage
544  END SUBROUTINE com_chkptr_c
545  END INTERFACE
546 
547  DEALLOCATE (ptr1)
548  DEALLOCATE (ptr2)
549 
550  CALL com_chkptr_c( 2, str2, ptr2, str1, ptr1)
551  END SUBROUTINE com_chkptr_end
552 
553 
554 
555 
556 
557 
558 
void const int char * str_to
Definition: mapptr.h:80
void int int REAL REAL * y
Definition: read.cpp:74
void const int char const int * len_to
Definition: mapptr.h:80
subroutine com_getptr_int0d(p, x)
Definition: utilities.f90:307
subroutine com_getptr_dbl2d(p, x)
Definition: utilities.f90:453
subroutine com_settypeinfo(wrapper)
Definition: utilities.f90:481
subroutine com_getptr_flt3d(p, x)
Definition: utilities.f90:411
subroutine com_getptr_chr0d(p, x)
Definition: utilities.f90:273
subroutine com_getptr_int1d(p, x)
Definition: utilities.f90:327
subroutine com_getptr_chr1d(p, x)
Definition: utilities.f90:293
subroutine com_mapptr_flt2d(p, tonull, x, n1, n2)
Definition: utilities.f90:165
subroutine com_mapptr_int0d(p, tonull, x)
Definition: utilities.f90:58
subroutine com_getptr_dbl1d(p, x)
Definition: utilities.f90:439
subroutine com_getptr_dbl0d(p, x)
Definition: utilities.f90:425
subroutine com_getptr_int3d(p, x)
Definition: utilities.f90:355
subroutine com_set_false(i)
Definition: utilities.f90:28
subroutine com_copy_string(str_frm, len_frm, str_to, len_to)
Definition: utilities.f90:33
subroutine com_mapptr_flt0d(p, tonull, x)
Definition: utilities.f90:126
subroutine com_mapptr_int2d(p, tonull, x, n1, n2)
Definition: utilities.f90:91
subroutine com_getptr_flt1d(p, x)
Definition: utilities.f90:383
subroutine com_mapptr_chr1d(p, tonull, x, n)
Definition: utilities.f90:42
blockLoc i
Definition: read.cpp:79
subroutine com_mapptr_dbl3d(p, tonull, x, n1, n2, n3)
Definition: utilities.f90:256
void int int REAL * x
Definition: read.cpp:74
subroutine com_mapptr_flt3d(p, tonull, x, n1, n2, n3)
Definition: utilities.f90:182
const NT & n
subroutine com_mapptr_dbl0d(p, tonull, x)
Definition: utilities.f90:200
subroutine com_set_true(i)
Definition: utilities.f90:23
subroutine com_getptr_flt2d(p, x)
Definition: utilities.f90:397
subroutine com_getptr_int2d(p, x)
Definition: utilities.f90:341
subroutine com_getptr_dbl3d(p, x)
Definition: utilities.f90:467
subroutine com_mapptr_flt1d(p, tonull, x, n)
Definition: utilities.f90:148
subroutine com_chkptr_end(str1, ptr1, str2, ptr2)
Definition: utilities.f90:530
subroutine com_mapptr_int1d(p, tonull, x, n)
Definition: utilities.f90:74
subroutine com_mapptr_int3d(p, tonull, x, n1, n2, n3)
Definition: utilities.f90:108
subroutine com_mapptr_dbl2d(p, tonull, x, n1, n2)
Definition: utilities.f90:239
subroutine com_getptr_flt0d(p, x)
Definition: utilities.f90:369
subroutine com_mapptr_dbl1d(p, tonull, x, n)
Definition: utilities.f90:222
subroutine com_chkptr_begin
Definition: utilities.f90:508
RT a() const
Definition: Line_2.h:140