1 |
#include "PTRACERS_OPTIONS.h" |
2 |
#ifdef PTRACERS_ALLOW_DYN_STATE |
3 |
|
4 |
MODULE PTRACERS_DYN_STATE_MOD |
5 |
|
6 |
! ptracers internal state data structures |
7 |
TYPE PTRACERS_ISTATE |
8 |
_RL, POINTER :: som_P(:,:,:,:,:,:) |
9 |
END TYPE |
10 |
|
11 |
CONTAINS |
12 |
SUBROUTINE PTRACERS_INIT_FIXED_DYNAMIC( |
13 |
& PTR_ISTATE_ARR, |
14 |
& PTRACERS_numInUse, |
15 |
& PTRACERS_SOM_Advection, |
16 |
& sNx, sNy, Nr, OLx, OLy, |
17 |
& nSx, nSy, nSOM, |
18 |
& myThid ) |
19 |
|
20 |
IMPLICIT NONE |
21 |
|
22 |
TYPE(PTRACERS_ISTATE), POINTER :: PTR_ISTATE_ARR(:) |
23 |
INTEGER PTRACERS_numInUse |
24 |
LOGICAL PTRACERS_SOM_Advection(PTRACERS_numInUse) |
25 |
INTEGER sNx, sNy, Nr, OLx, OLy, nSx, nSy, nSOM |
26 |
INTEGER myThid |
27 |
|
28 |
INTEGER iPtr |
29 |
|
30 |
ALLOCATE( PTR_ISTATE_ARR(PTRACERS_numInUse) ) |
31 |
|
32 |
DO iPtr = 1, PTRACERS_numInUse |
33 |
IF ( PTRACERS_SOM_Advection(iPtr) ) THEN |
34 |
ALLOCATE( PTR_ISTATE_ARR(iPtr)%som_P(1-OLx:sNx+OLx, |
35 |
& 1-OLy:sNy+OLy, |
36 |
& Nr, |
37 |
& nSx, |
38 |
& nSy, |
39 |
& nSOM) ) |
40 |
ENDIF |
41 |
ENDDO |
42 |
|
43 |
RETURN |
44 |
END SUBROUTINE |
45 |
|
46 |
END MODULE |
47 |
#else |
48 |
! some compilers do not like empty files, so ... |
49 |
SUBROUTINE PTRACERS_DYN_STATE_MOD_DUMMY |
50 |
RETURN |
51 |
END SUBROUTINE |
52 |
#endif |
53 |
|