1 | MODULE scoce |
---|
2 | !!====================================================================== |
---|
3 | !! *** MODULE oce *** |
---|
4 | !! Ocean : dynamics and active tracers defined in memory |
---|
5 | !!====================================================================== |
---|
6 | !! History : 1.0 ! 2002-11 (G. Madec) F90: Free form and module |
---|
7 | !! 3.1 ! 2009-02 (G. Madec, M. Leclair) pure z* |
---|
8 | !coordinate |
---|
9 | !! 3.3 ! 2010-09 (C. Ethe) TRA-TRC merge: add ts, gtsu, |
---|
10 | !gtsv 4D arrays |
---|
11 | !! 3.7 ! 2014-01 (G. Madec) suppression of curl and |
---|
12 | !before hdiv from in-core memory |
---|
13 | !!---------------------------------------------------------------------- |
---|
14 | USE par_oce ! ocean parameters |
---|
15 | USE lib_mpp ! MPP library |
---|
16 | IMPLICIT NONE |
---|
17 | PRIVATE |
---|
18 | |
---|
19 | PUBLIC scoce_alloc ! routine called by nemo_init in nemogcm.F90 |
---|
20 | |
---|
21 | REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: scr1, scr2, scr3, & !: scratch 3D arrays |
---|
22 | scr4, scr5, scr6, & |
---|
23 | scr7, scr8, scr9, & |
---|
24 | scr10, scr11 |
---|
25 | REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: scr3D1 !: scratch 3D arrays |
---|
26 | REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: scr2D1, scr2D2, scr2D3, scr2D4, scr2D5, & !: scratch 2D arrays |
---|
27 | scr2D6, scr2D7, scr2D8, scr2D9, scr2D10, scr2D11, & |
---|
28 | scr2D12, scr2D13, scr2D14, scr2D15, scr2D16, scr2D17, & |
---|
29 | scr2D18, scr2D19, scr2D20, scr2D21, scr2D22, scr2D23, & |
---|
30 | scr2D24, scr2D25, scr2D26, scr2D27, scr2D28, scr2D29, & |
---|
31 | scr2D30, scr2D31, scr2D32, scr2D33, scr2D34, scr2D35, & |
---|
32 | scr2D36, scr2D37, scr2D38 |
---|
33 | INTEGER, PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: iscr2D1, iscr2D2, iscr2D3 !: integer scratch 2D arrays |
---|
34 | |
---|
35 | CONTAINS |
---|
36 | |
---|
37 | INTEGER FUNCTION scoce_alloc() |
---|
38 | !!---------------------------------------------------------------------- |
---|
39 | !! *** FUNCTION oce_alloc *** |
---|
40 | !!---------------------------------------------------------------------- |
---|
41 | INTEGER :: ierr(3) |
---|
42 | !!---------------------------------------------------------------------- |
---|
43 | ! |
---|
44 | ierr(:) = 0 |
---|
45 | ALLOCATE(scr1(jpi,jpj,jpk), scr2(jpi,jpj,jpk), scr3(jpi,jpj,jpk), scr4(jpi,jpj,jpk), scr5(jpi,jpj,jpk), & |
---|
46 | scr6(jpi,jpj,jpk), scr7(jpi,jpj,jpk), scr8(jpi,jpj,jpk), scr9(jpi,jpj,jpk), scr10(jpi,jpj,jpk), & |
---|
47 | scr11(jpi,jpj,jpk), STAT=ierr(1)) |
---|
48 | ALLOCATE(scr2D1(jpi,jpj), scr2D2(jpi,jpj), scr2D3(jpi,jpj), scr2D4(jpi,jpj), scr2D5(jpi,jpj), & |
---|
49 | scr2D6(jpi,jpj), scr2D7(jpi,jpj), scr2D8(jpi,jpj), scr2D9(jpi,jpj), scr2D10(jpi,jpj),& |
---|
50 | scr2D11(jpi,jpj), scr2D12(jpi,jpj), scr2D13(jpi,jpj), scr2D14(jpi,jpj), scr2D15(jpi,jpj),& |
---|
51 | scr2D16(jpi,jpj), scr2D17(jpi,jpj), scr2D18(jpi,jpj), scr2D19(jpi,jpj), scr2D20(jpi,jpj),& |
---|
52 | scr2D21(jpi,jpj), scr2D22(jpi,jpj), scr2D23(jpi,jpj), scr2D24(jpi,jpj), scr2D25(jpi,jpj),& |
---|
53 | scr2D26(jpi,jpj), scr2D27(jpi,jpj), scr2D28(jpi,jpj), scr2D29(jpi,jpj), scr2D30(jpi,jpj),& |
---|
54 | scr2D31(jpi,jpj), scr2D32(jpi,jpj), scr2D33(jpi,jpj), scr2D34(jpi,jpj), scr2D35(jpi,jpj),& |
---|
55 | scr2D36(jpi,jpj), scr2D37(jpi,jpj), scr2D38(jpi,jpj), & |
---|
56 | scr3D1(jpi,jpj, jpts), STAT=ierr(2)) |
---|
57 | ALLOCATE(iscr2D1(jpi,jpj), iscr2D2(jpi,jpj), iscr2D3(jpi,jpj), STAT=ierr(3)) |
---|
58 | ! |
---|
59 | scoce_alloc = MAXVAL( ierr ) |
---|
60 | IF( lk_mpp ) CALL mpp_sum( scoce_alloc ) |
---|
61 | IF( scoce_alloc /= 0 ) CALL ctl_stop( 'STOP', 'nemo_alloc: unable to allocate scratch ocean arrays' ) |
---|
62 | scr1(:, :, :) = 0. |
---|
63 | scr2(:, :, :) = 0. |
---|
64 | scr3(:, :, :) = 0. |
---|
65 | scr4(:, :, :) = 0. |
---|
66 | scr5(:, :, :) = 0. |
---|
67 | scr6(:, :, :) = 0. |
---|
68 | scr7(:, :, :) = 0. |
---|
69 | scr8(:, :, :) = 0. |
---|
70 | scr9(:, :, :) = 0. |
---|
71 | scr10(:, :, :) = 0. |
---|
72 | scr11(:, :, :) = 0. |
---|
73 | scr3D1(:, :, :)= 0. |
---|
74 | scr2D1(:, :) = 0. |
---|
75 | scr2D2(:, :) = 0. |
---|
76 | scr2D3(:, :) = 0. |
---|
77 | scr2D4(:, :) = 0. |
---|
78 | scr2D5(:, :) = 0. |
---|
79 | scr2D6(:, :) = 0. |
---|
80 | scr2D7(:, :) = 0. |
---|
81 | scr2D8(:, :) = 0. |
---|
82 | scr2D9(:, :) = 0. |
---|
83 | scr2D10(:, :) = 0. |
---|
84 | scr2D11(:, :) = 0. |
---|
85 | scr2D12(:, :) = 0. |
---|
86 | scr2D13(:, :) = 0. |
---|
87 | scr2D14(:, :) = 0. |
---|
88 | scr2D15(:, :) = 0. |
---|
89 | scr2D16(:, :) = 0. |
---|
90 | scr2D17(:, :) = 0. |
---|
91 | scr2D18(:, :) = 0. |
---|
92 | scr2D19(:, :) = 0. |
---|
93 | iscr2D1(:, :) = 0 |
---|
94 | iscr2D2(:, :) = 0 |
---|
95 | iscr2D3(:, :) = 0 |
---|
96 | ! |
---|
97 | END FUNCTION scoce_alloc |
---|
98 | |
---|
99 | !!====================================================================== |
---|
100 | END MODULE scoce |
---|