1 |
jahn |
1.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 |
|
|
! Nothing |
49 |
|
|
#endif |
50 |
|
|
|