New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
scoce.F90 in NEMO/branches/UKMO/dev_r10037_GPU/src/OCE – NEMO

source: NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/scoce.F90 @ 11467

Last change on this file since 11467 was 11467, checked in by andmirek, 5 years ago

Ticket #2197 allocate arrays at the beggining of the run

File size: 5.0 KB
Line 
1MODULE 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
35CONTAINS
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   !!======================================================================
100END MODULE scoce 
Note: See TracBrowser for help on using the repository browser.