/[MITgcm]/MITgcm/pkg/ptracers/ptracers_init_fixed.F
ViewVC logotype

Contents of /MITgcm/pkg/ptracers/ptracers_init_fixed.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download)
Mon Dec 17 22:03:15 2007 UTC (16 years, 6 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint59q, checkpoint59p, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n
Changes since 1.2: +23 -8 lines
add internal parameter and flags:
a) ptracer multi-Dim advection flag and AdamsBashforth flag
b) starting AdamsBashforth flag (in new header file: PTRACERS_RESTART.h)

1 C $Header: /u/gcmpack/MITgcm/pkg/ptracers/ptracers_init_fixed.F,v 1.2 2007/11/05 18:48:04 jmc Exp $
2 C $Name: $
3
4 #include "PTRACERS_OPTIONS.h"
5
6 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
7 CBOP
8 C !ROUTINE: PTRACERS_INIT_FIXED
9
10 C !INTERFACE:
11 SUBROUTINE PTRACERS_INIT_FIXED( myThid )
12
13 C !DESCRIPTION:
14 C Initialize PTRACERS constant
15
16 C !USES:
17 IMPLICIT NONE
18 #include "SIZE.h"
19 #include "EEPARAMS.h"
20 #include "PARAMS.h"
21 #include "PTRACERS_SIZE.h"
22 #include "PTRACERS_PARAMS.h"
23 #include "PTRACERS_RESTART.h"
24 #include "GAD.h"
25
26 C !INPUT PARAMETERS:
27 INTEGER myThid
28 CEOP
29
30 #ifdef ALLOW_PTRACERS
31
32 C !LOCAL VARIABLES:
33 C iTracer :: tracer index
34 C msgBuf - Informational/error meesage buffer
35 INTEGER iTracer
36 INTEGER minOlSize
37 CHARACTER*(MAX_LEN_MBUF) msgBuf
38
39 _BEGIN_MASTER( myThid )
40
41 C Initialise internal parameter in common block:
42 DO iTracer = 1, PTRACERS_num
43 PTRACERS_MultiDimAdv(iTracer) = multiDimAdvection
44 PTRACERS_AdamsBashGtr(iTracer) = .FALSE.
45 PTRACERS_startAB(iTracer) = nIter0 - PTRACERS_Iter0
46 ENDDO
47
48 C Loop over tracers
49 DO iTracer = 1, PTRACERS_numInUse
50
51 IF (
52 & PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_2ND .OR.
53 & PTRACERS_advScheme(iTracer).EQ.ENUM_UPWIND_3RD .OR.
54 & PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_4TH
55 & ) PTRACERS_MultiDimAdv(iTracer) = .FALSE.
56 useMultiDimAdvec = useMultiDimAdvec
57 & .OR. PTRACERS_MultiDimAdv(iTracer)
58 PTRACERS_AdamsBashGtr(iTracer) =
59 & PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_2ND .OR.
60 & PTRACERS_advScheme(iTracer).EQ.ENUM_UPWIND_3RD .OR.
61 & PTRACERS_advScheme(iTracer).EQ.ENUM_CENTERED_4TH
62
63 C end of Tracer loop
64 ENDDO
65 _END_MASTER( myThid )
66 _BARRIER
67
68 C-- Check size of the overlap :
69 IF ( useCubedSphereExchange .AND. useMultiDimAdvec ) THEN
70 C- multi-dim-advection on CS-grid requires to double the size of Olx,Oly
71 minOlSize = 2
72 DO iTracer = 1, PTRACERS_numInUse
73 IF ( PTRACERS_advScheme(iTracer).EQ.ENUM_FLUX_LIMIT .OR.
74 & PTRACERS_advScheme(iTracer).EQ.ENUM_DST3_FLUX_LIMIT .OR.
75 & PTRACERS_advScheme(iTracer).EQ.ENUM_DST3 ) minOlSize = 4
76 ENDDO
77 IF ( Olx.LT.minOlSize .OR. Oly.LT.minOlSize ) THEN
78 WRITE(msgBuf,'(2A)') 'PTRACERS_INIT_FIXED: ',
79 & 'Multi-Dim Advection with 5-points stencil'
80 CALL PRINT_ERROR( msgBuf , myThid)
81 WRITE(msgBuf,'(2A,I2)') 'PTRACERS_INIT_FIXED: ',
82 & 'advection scheme needs at least Olx,Oly=', minOlSize
83 CALL PRINT_ERROR( msgBuf , myThid)
84 STOP 'ABNORMAL END: S/R PTRACERS_INIT_FIXED'
85 ENDIF
86 ENDIF
87
88 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
89
90 #ifdef ALLOW_MNC
91 IF (useMNC) THEN
92 C Initialize the MNC variable types for PTRACERS
93 CALL PTRACERS_MNC_INIT( myThid )
94 ENDIF
95 #endif
96
97 #ifdef ALLOW_DIAGNOSTICS
98 IF ( useDiagnostics ) THEN
99 CALL PTRACERS_DIAGNOSTICS_INIT( myThid )
100 ENDIF
101 #endif
102
103 #endif /* ALLOW_PTRACERS */
104
105 RETURN
106 END

  ViewVC Help
Powered by ViewVC 1.1.22