/[MITgcm]/MITgcm/pkg/land/land_check.F
ViewVC logotype

Annotation of /MITgcm/pkg/land/land_check.F

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


Revision 1.1 - (hide annotations) (download)
Wed May 28 21:59:32 2014 UTC (10 years ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64z, checkpoint66g, checkpoint66f, checkpoint66e, checkpoint66d, checkpoint66c, checkpoint66b, checkpoint66a, checkpoint66o, checkpoint66n, checkpoint66m, checkpoint66l, checkpoint66k, checkpoint66j, checkpoint66i, checkpoint66h, checkpoint65z, checkpoint65x, checkpoint65y, checkpoint65r, checkpoint65s, checkpoint65p, checkpoint65q, checkpoint65v, checkpoint65w, checkpoint65t, checkpoint65u, checkpoint65j, checkpoint65k, checkpoint65h, checkpoint65i, checkpoint65n, checkpoint65o, checkpoint65l, checkpoint65m, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65g, checkpoint65d, checkpoint65e, checkpoint65, HEAD
- rename LAND_INITIALISE to LAND_INIT_FIXED (without calling LAND_READPARMS)
- move LAND pkg check & summary from LAND_READPARMS to new S/R LAND_CHECK

1 jmc 1.1 C $Header: /u/gcmpack/MITgcm/pkg/land/land_readparms.F,v 1.13 2009/04/28 22:10:02 jmc Exp $
2     C $Name: $
3    
4     #include "LAND_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: LAND_CHECK
8     C !INTERFACE:
9     SUBROUTINE LAND_CHECK( myThid )
10    
11     C !DESCRIPTION: \bv
12     C *==========================================================*
13     C | S/R LAND_CHECK
14     C | o Check parameters and other package dependences
15     C *==========================================================*
16     C \ev
17    
18     C !USES:
19     IMPLICIT NONE
20    
21     C == Global variables ===
22     C-- size for MITgcm & Land package :
23     #include "LAND_SIZE.h"
24    
25     #include "EEPARAMS.h"
26     #include "PARAMS.h"
27     #include "LAND_PARAMS.h"
28     #ifdef ALLOW_MNC
29     # include "MNC_PARAMS.h"
30     #endif
31    
32     C !INPUT/OUTPUT PARAMETERS:
33     C myThid :: my Thread Id number
34     INTEGER myThid
35    
36     #ifdef ALLOW_LAND
37     C !FUNCTIONS:
38     INTEGER ILNBLNK
39     EXTERNAL ILNBLNK
40    
41     C !LOCAL VARIABLES:
42     C msgBuf :: Informational/error message buffer
43     C iUnit :: Work variable for IO unit number
44     C iL :: Work variable for length of file-name
45     CHARACTER*(MAX_LEN_MBUF) msgBuf
46     INTEGER iUnit, iL
47     CEOP
48    
49     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
50    
51     _BEGIN_MASTER(myThid)
52    
53     iUnit = standardMessageUnit
54     WRITE(msgBuf,'(A)') 'LAND_CHECK: #define ALLOW_LAND'
55     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
56    
57     C-- Print out parameter values :
58     WRITE(msgBuf,'(A)') '// ==================================='
59     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
60     WRITE(msgBuf,'(A)') '// Land package parameters :'
61     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
62     WRITE(msgBuf,'(A)') '// ==================================='
63     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
64    
65     C- namelist LAND_MODEL_PAR:
66     CALL WRITE_0D_L( land_calc_grT, INDEX_NONE,
67     & 'land_calc_grT =',
68     & ' /* step forward ground Temp. on/off flag */')
69     CALL WRITE_0D_L( land_calc_grW, INDEX_NONE,
70     & 'land_calc_grW =',
71     & ' /* step forward soil moiture on/off flag */')
72     CALL WRITE_0D_L( land_impl_grT, INDEX_NONE,
73     & 'land_impl_grT =',
74     & ' /* solve ground temperature implicitly */')
75     CALL WRITE_0D_L( land_calc_snow, INDEX_NONE,
76     & 'land_calc_snow =',
77     & ' /* step forward snow thickness */')
78     CALL WRITE_0D_L( land_calc_alb, INDEX_NONE,
79     & 'land_calc_alb =',
80     & ' /* compute land+snow albedo */')
81     iL = ILNBLNK( land_grT_iniFile )
82     IF ( iL.GE.1 ) THEN
83     WRITE(msgBuf,'(A,A)') 'land_grT_iniFile = ',
84     & '/* Initial ground-Temp Input-File */'
85     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
86     WRITE(msgBuf,'(16X,A)') land_grT_iniFile(1:iL)
87     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
88     msgBuf=' ;'
89     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
90     ENDIF
91     iL = ILNBLNK( land_grW_iniFile )
92     IF ( iL.GE.1 ) THEN
93     WRITE(msgBuf,'(A,A)') 'land_grW_iniFile = ',
94     & '/* Initial soil-Water Input-File */'
95     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
96     WRITE(msgBuf,'(16X,A)') land_grW_iniFile(1:iL)
97     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
98     msgBuf=' ;'
99     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
100     ENDIF
101     iL = ILNBLNK( land_snow_iniFile )
102     IF ( iL.GE.1 ) THEN
103     WRITE(msgBuf,'(A,A)') 'land_snow_iniFile= ',
104     & '/* Initial snow thickness Input-File */'
105     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
106     WRITE(msgBuf,'(16X,A)') land_grW_iniFile(1:iL)
107     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
108     msgBuf=' ;'
109     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
110     ENDIF
111     CALL WRITE_0D_RL( land_deltaT, INDEX_NONE,'land_deltaT =',
112     & ' /* land model Time-Step (s) */')
113     CALL WRITE_0D_RL( land_taveFreq, INDEX_NONE,'land_taveFreq =',
114     & ' /* Frequency^-1 for time-Aver. output (s) */')
115     CALL WRITE_0D_RL( land_diagFreq, INDEX_NONE,'land_diagFreq =',
116     & ' /* Frequency^-1 for diagnostic output (s) */')
117     CALL WRITE_0D_RL( land_diagFreq, INDEX_NONE,'land_monFreq =',
118     & ' /* Frequency^-1 for monitor output (s) */')
119     CALL WRITE_1D_RL( land_dzF,land_nLev, INDEX_K,'land_dzF = ',
120     & ' /* layer thickness ( m ) */')
121     CALL WRITE_1D_RL(land_rec_dzC,land_nLev,INDEX_K,'land_rec_dzC= '
122     & ,' /* recip. vertical spacing (m-1) */')
123     CALL WRITE_0D_L( land_timeave_mdsio, INDEX_NONE,
124     & 'land_timeave_mdsio =',' /* use MDSIO for Tave output */')
125     CALL WRITE_0D_L( land_timeave_mnc, INDEX_NONE,
126     & 'land_timeave_mnc =',' /* use MNC for Tave output */')
127     CALL WRITE_0D_L( land_snapshot_mdsio, INDEX_NONE,
128     & 'land_snapshot_mdsio =',
129     & ' /* use MDSIO for snapshot output */')
130     CALL WRITE_0D_L( land_snapshot_mnc, INDEX_NONE,
131     & 'land_snapshot_mnc =',' /* use MNC for snapshot output */')
132     CALL WRITE_0D_L( land_mon_stdio, INDEX_NONE,
133     & 'land_mon_stdio =',' /* use STDOUT for monitor output */')
134     CALL WRITE_0D_L( land_mon_mnc, INDEX_NONE,
135     & 'land_mon_mnc =',' /* use MNC for monitor output */')
136     CALL WRITE_0D_L( land_pickup_write_mnc, INDEX_NONE,
137     & 'land_pickup_write_mnc =',
138     & ' /* use MNC for writing pickups */')
139     CALL WRITE_0D_L( land_pickup_read_mnc, INDEX_NONE,
140     & 'land_pickup_read_mnc =',
141     & ' /* use MNC for reading pickups */')
142    
143     C- namelist LAND_PHYS_PAR:
144     CALL WRITE_0D_RL(land_grdLambda,INDEX_NONE,'land_grdLambda =',
145     & ' /* Thermal conductivity of the ground (W/m/K)*/')
146     CALL WRITE_0D_RL( land_heatCs,INDEX_NONE,'land_heatCs =',
147     & ' /* Heat capacity of dry soil (J/m3/K) */')
148     CALL WRITE_0D_RL( land_CpWater,INDEX_NONE,'land_CpWater =',
149     & ' /* Heat capacity of water (J/kg/K) */')
150     CALL WRITE_0D_RL( land_wTauDiff,INDEX_NONE,'land_wTauDiff =',
151     & ' /* soil moisture diffusion time scale (s) */')
152     CALL WRITE_0D_RL( land_waterCap,INDEX_NONE,'land_waterCap =',
153     & ' /* field capacity per meter of soil (1) */')
154     CALL WRITE_0D_RL(land_fractRunOff,INDEX_NONE,'land_fractRunOff='
155     & ,' /* fraction of water in excess which run-off */')
156     CALL WRITE_0D_RL(land_rhoLiqW,INDEX_NONE,'land_rhoLiqW =',
157     & ' /* density of liquid water (kg/m3) */')
158     CALL WRITE_0D_RL(land_rhoSnow,INDEX_NONE,'land_rhoSnow =',
159     & ' /* density of snow (kg/m3) */')
160     CALL WRITE_0D_RL(land_Lfreez,INDEX_NONE,'land_Lfreez =',
161     & ' /* Latent heat of freezing (J/kg) */')
162     CALL WRITE_0D_RL(land_hMaxSnow,INDEX_NONE,'land_hMaxSnow =',
163     & ' /* maximum snow-thickness (m) */')
164     CALL WRITE_0D_RL(diffKsnow,INDEX_NONE,'diffKsnow =',
165     & ' /* thermal conductivity of snow (W/m/K) */')
166     CALL WRITE_0D_RL(timeSnowAge,INDEX_NONE,'timeSnowAge =',
167     & ' /* snow aging time scale (s) */')
168     CALL WRITE_0D_RL(hNewSnowAge,INDEX_NONE,'hNewSnowAge =',
169     & ' /* new snow thickness to refresh snow-age by 1/e */')
170     CALL WRITE_0D_RL(albColdSnow,INDEX_NONE,'albColdSnow =',
171     & ' /* albedo of cold (=dry) new snow */')
172     CALL WRITE_0D_RL(albWarmSnow,INDEX_NONE,'albWarmSnow =',
173     & ' /* albedo of warm (=wet) new snow */')
174     CALL WRITE_0D_RL(tempSnowAlbL,INDEX_NONE,'tempSnowAlbL =',
175     & ' /* Temp. transition from ColdSnow to WarmSnow Alb. (oC) */')
176     CALL WRITE_0D_RL(albOldSnow, INDEX_NONE,'albOldSnow =',
177     & ' /* albedo of old snow (snowAge >35.d)*/')
178     CALL WRITE_0D_RL(hAlbSnow, INDEX_NONE,'hAlbSnow =',
179     & ' /* snow depth for albedo transition */')
180    
181     WRITE(msgBuf,'(A)') '// ==================================='
182     CALL PRINT_MESSAGE(msgBuf,iUnit,SQUEEZE_RIGHT,myThid)
183    
184     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
185     C-- Check parameters and model configuration
186    
187     C- for now, Land package works only with AIM package:
188     IF ( .NOT.useAIM ) THEN
189     WRITE(msgBuf,'(A)')
190     & 'LAND_CHECK: land pkg only implemented with AIM physics'
191     CALL PRINT_ERROR( msgBuf, myThid)
192     WRITE(msgBuf,'(A)')
193     & 'DO NOT use Land (useLand=T) without AIM (useAIM=F, data.pkg)'
194     CALL PRINT_ERROR( msgBuf, myThid)
195     STOP 'ABNORMAL END: S/R LAND_CHECK'
196     ENDIF
197    
198     IF ( land_nLev.NE.2 .AND. land_impl_grT ) THEN
199     WRITE(msgBuf,'(2A,I3)') 'LAND_CHECK: ',
200     & ' land_impl_grT=.T. but land_nLev=',land_nLev
201     CALL PRINT_ERROR( msgBuf, myThid)
202     WRITE(msgBuf,'(A)')
203     & 'Implicit scheme only implemented for 2 levels land Temp'
204     CALL PRINT_ERROR( msgBuf, myThid)
205     STOP 'ABNORMAL END: S/R LAND_CHECK'
206     ENDIF
207    
208     C- If land_taveFreq is positive, then must compile the land-diagnostics code
209     #ifndef ALLOW_LAND_TAVE
210     IF (land_taveFreq.GT.0.) THEN
211     WRITE(msgBuf,'(2A)') 'LAND_CHECK:',
212     & ' land_taveFreq > 0 but ALLOW_LAND_TAVE undefined'
213     CALL PRINT_ERROR( msgBuf, myThid)
214     WRITE(msgBuf,'(2A)') 'Re-compile setting: ',
215     & '#define ALLOW_LAND_TAVE (in LAND_OPTIONS.h)'
216     CALL PRINT_ERROR( msgBuf, myThid)
217     STOP 'ABNORMAL END: S/R LAND_CHECK'
218     ENDIF
219     #endif /* ALLOW_LAND_TAVE */
220    
221     C- If land_monFreq is > 0, then must compile the monitor pkg
222     #ifndef ALLOW_MONITOR
223     IF (land_monFreq.GT.0.) THEN
224     WRITE(msgBuf,'(2A)') 'LAND_CHECK:',
225     & ' land_monFreq > 0 but ALLOW_MONITOR undefined'
226     CALL PRINT_ERROR( msgBuf, myThid)
227     WRITE(msgBuf,'(2A)')
228     & 'Re-compile with pkg monitor (in packages.conf)'
229     CALL PRINT_ERROR( msgBuf, myThid)
230     STOP 'ABNORMAL END: S/R LAND_CHECK'
231     ENDIF
232     #endif /* ALLOW_MONITOR */
233    
234     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
235    
236     _END_MASTER(myThid)
237    
238     #endif /* ALLOW_LAND */
239    
240     RETURN
241     END

  ViewVC Help
Powered by ViewVC 1.1.22