44 |
C !LOCAL VARIABLES: |
C !LOCAL VARIABLES: |
45 |
C msgBuf :: Temp. for building output string. |
C msgBuf :: Temp. for building output string. |
46 |
C rUnits :: vertical coordinate units |
C rUnits :: vertical coordinate units |
47 |
|
C ioUnit :: Temp. for fortran I/O unit |
48 |
C I,J,K :: Loop counters. |
C I,J,K :: Loop counters. |
49 |
C bi,bj :: Tile loop counters. |
C bi,bj :: Tile loop counters. |
50 |
C xcoord :: Temps. for building lists of values for uni-dimensionally |
C xcoord :: Temps. for building lists of values for uni-dimensionally |
51 |
C ycoord :: varying parameters. |
C ycoord :: varying parameters. |
52 |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
CHARACTER*(MAX_LEN_MBUF) msgBuf |
53 |
CHARACTER*2 rUnits |
CHARACTER*2 rUnits |
54 |
INTEGER I,J,K |
INTEGER ioUnit |
55 |
INTEGER bi, bj |
INTEGER I,J,K |
56 |
_RL xcoord(Nx) |
INTEGER bi, bj |
57 |
_RL ycoord(Ny) |
_RL xcoord(Nx) |
58 |
_RL rcoord(Nr+1) |
_RL ycoord(Ny) |
59 |
|
_RL rcoord(Nr+1) |
60 |
INTEGER coordLine |
INTEGER coordLine |
61 |
INTEGER tileLine |
INTEGER tileLine |
62 |
|
|
64 |
_BARRIER |
_BARRIER |
65 |
_BEGIN_MASTER(myThid) |
_BEGIN_MASTER(myThid) |
66 |
|
|
67 |
|
ioUnit = standardMessageUnit |
68 |
rUnits = ' m' |
rUnits = ' m' |
69 |
IF ( usingPCoords ) rUnits = 'Pa' |
IF ( usingPCoords ) rUnits = 'Pa' |
70 |
|
|
71 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
72 |
&'// =======================================================' |
&'// =======================================================' |
73 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
74 |
WRITE(msgBuf,'(A)') '// Model configuration' |
WRITE(msgBuf,'(A)') '// Model configuration' |
75 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
76 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
77 |
&'// =======================================================' |
&'// =======================================================' |
78 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
79 |
|
|
80 |
WRITE(msgBuf,'(A)') '// ' |
WRITE(msgBuf,'(A)') '// ' |
81 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
82 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
83 |
& '// "Physical" paramters ( PARM01 in namelist ) ' |
& '// "Physical" paramters ( PARM01 in namelist ) ' |
84 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
85 |
WRITE(msgBuf,'(A)') '// ' |
WRITE(msgBuf,'(A)') '// ' |
86 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
87 |
CALL WRITE_0D_C( buoyancyRelation, -1, INDEX_NONE, |
CALL WRITE_0D_C( buoyancyRelation, -1, INDEX_NONE, |
88 |
& 'buoyancyRelation =', ' /* Type of relation to get Buoyancy */') |
& 'buoyancyRelation =', ' /* Type of relation to get Buoyancy */') |
89 |
CALL WRITE_0D_L( fluidIsAir, INDEX_NONE, |
CALL WRITE_0D_L( fluidIsAir, INDEX_NONE, |
196 |
DO K = 1, Nr |
DO K = 1, Nr |
197 |
WRITE(msgBuf,'(I3,13F8.3)') |
WRITE(msgBuf,'(I3,13F8.3)') |
198 |
& K,eosRefT(K),eosRefS(K),eosSig0(K), (eosC(I,K),I=1,9) |
& K,eosRefT(K),eosRefS(K),eosSig0(K), (eosC(I,K),I=1,9) |
199 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
200 |
ENDDO |
ENDDO |
201 |
ENDIF |
ENDIF |
202 |
IF ( fluidIsAir ) THEN |
IF ( fluidIsAir ) THEN |
266 |
&' /* Non-linear Free Surf. options (-1,0,1,2,3)*/') |
&' /* Non-linear Free Surf. options (-1,0,1,2,3)*/') |
267 |
WRITE(msgBuf,'(2A)') ' -1,0= Off ; 1,2,3= On,', |
WRITE(msgBuf,'(2A)') ' -1,0= Off ; 1,2,3= On,', |
268 |
& ' 2=+rescale gU,gV, 3=+update cg2d solv.' |
& ' 2=+rescale gU,gV, 3=+update cg2d solv.' |
269 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
270 |
CALL WRITE_0D_R8( hFacInf, INDEX_NONE, |
CALL WRITE_0D_R8( hFacInf, INDEX_NONE, |
271 |
&'hFacInf =', |
&'hFacInf =', |
272 |
&' /* lower threshold for hFac (nonlinFreeSurf only)*/') |
&' /* lower threshold for hFac (nonlinFreeSurf only)*/') |
333 |
& 'useJamartWetPoints=',' /* Coriolis WetPoints method flag */') |
& 'useJamartWetPoints=',' /* Coriolis WetPoints method flag */') |
334 |
CALL WRITE_0D_L( useJamartMomAdv, INDEX_NONE, |
CALL WRITE_0D_L( useJamartMomAdv, INDEX_NONE, |
335 |
& 'useJamartMomAdv=',' /* V.I. Non-linear terms Jamart flag */') |
& 'useJamartMomAdv=',' /* V.I. Non-linear terms Jamart flag */') |
|
CALL WRITE_0D_L( SadournyCoriolis, INDEX_NONE, |
|
|
& 'SadournyCoriolis=',' /* Sadourny Coriolis discr. flag */') |
|
|
CALL WRITE_0D_L( upwindVorticity, INDEX_NONE, |
|
|
& 'upwindVorticity=',' /* Upwind bias vorticity flag */') |
|
336 |
CALL WRITE_0D_L( useAbsVorticity, INDEX_NONE, |
CALL WRITE_0D_L( useAbsVorticity, INDEX_NONE, |
337 |
& 'useAbsVorticity=',' /* Work with f+zeta in Coriolis */') |
& 'useAbsVorticity=',' /* Work with f+zeta in Coriolis */') |
338 |
|
c CALL WRITE_0D_I( selectVortScheme, INDEX_NONE, |
339 |
|
c & 'selectVortScheme=',' /* Scheme selector for Vorticity-Term */') |
340 |
|
WRITE(msgBuf,'(2A)') |
341 |
|
& 'selectVortScheme=',' /* Scheme selector for Vorticity-Term */' |
342 |
|
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
343 |
|
CALL PRINT_LIST_I( selectVortScheme, 1, INDEX_NONE, |
344 |
|
& .FALSE., .TRUE., ioUnit ) |
345 |
|
WRITE(msgBuf,'(2A)') ' = 0 : enstrophy (Shallow-Water Eq.)', |
346 |
|
& ' conserving scheme by Sadourny, JAS 75' |
347 |
|
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
348 |
|
WRITE(msgBuf,'(2A)') ' = 1 : same as 0 with modified hFac' |
349 |
|
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
350 |
|
WRITE(msgBuf,'(2A)') ' = 2 : energy conserving scheme', |
351 |
|
& ' (used by Sadourny in JAS 75 paper)' |
352 |
|
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
353 |
|
c WRITE(msgBuf,'(2A)') ' = 3 : energy (general)', |
354 |
|
c & ' and enstrophy (2D, nonDiv.) conserving scheme' |
355 |
|
c CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
356 |
|
c WRITE(msgBuf,'(2A)') ' from Sadourny', |
357 |
|
c & ' (Burridge & Haseler, ECMWF Rep.4, 1977)' |
358 |
|
c CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
359 |
|
c WRITE(msgBuf,'(2A)') ' = 4 : energy (general)', |
360 |
|
c & ' and enstrophy (2D, nonDiv.) conserving scheme' |
361 |
|
c CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
362 |
|
c WRITE(msgBuf,'(2A)') ' from Arakawa & Lamb, 77' |
363 |
|
c CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
364 |
|
WRITE(msgBuf,'(A)') ' ; ' |
365 |
|
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
366 |
|
CALL WRITE_0D_L( upwindVorticity, INDEX_NONE, |
367 |
|
& 'upwindVorticity=',' /* Upwind bias vorticity flag */') |
368 |
CALL WRITE_0D_L( highOrderVorticity, INDEX_NONE, |
CALL WRITE_0D_L( highOrderVorticity, INDEX_NONE, |
369 |
& 'highOrderVorticity=',' /* High order interp. of vort. flag */') |
& 'highOrderVorticity=',' /* High order interp. of vort. flag */') |
370 |
CALL WRITE_0D_L( upwindShear, INDEX_NONE, |
CALL WRITE_0D_L( upwindShear, INDEX_NONE, |
423 |
CALL WRITE_0D_I( debugLevel, INDEX_NONE, |
CALL WRITE_0D_I( debugLevel, INDEX_NONE, |
424 |
& ' debugLevel =', ' /* select debugging level */') |
& ' debugLevel =', ' /* select debugging level */') |
425 |
WRITE(msgBuf,'(A)') '// ' |
WRITE(msgBuf,'(A)') '// ' |
426 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
427 |
|
|
428 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
429 |
& '// Elliptic solver(s) paramters ( PARM02 in namelist ) ' |
& '// Elliptic solver(s) paramters ( PARM02 in namelist ) ' |
430 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
431 |
WRITE(msgBuf,'(A)') '// ' |
WRITE(msgBuf,'(A)') '// ' |
432 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
433 |
CALL WRITE_0D_I( cg2dMaxIters, INDEX_NONE,'cg2dMaxIters =', |
CALL WRITE_0D_I( cg2dMaxIters, INDEX_NONE,'cg2dMaxIters =', |
434 |
&' /* Upper limit on 2d con. grad iterations */') |
&' /* Upper limit on 2d con. grad iterations */') |
435 |
CALL WRITE_0D_I( cg2dChkResFreq, INDEX_NONE,'cg2dChkResFreq =', |
CALL WRITE_0D_I( cg2dChkResFreq, INDEX_NONE,'cg2dChkResFreq =', |
444 |
&' /* Freq. for updating cg2d preconditioner */') |
&' /* Freq. for updating cg2d preconditioner */') |
445 |
|
|
446 |
WRITE(msgBuf,'(A)') '// ' |
WRITE(msgBuf,'(A)') '// ' |
447 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
448 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
449 |
& '// Time stepping paramters ( PARM03 in namelist ) ' |
& '// Time stepping paramters ( PARM03 in namelist ) ' |
450 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
451 |
WRITE(msgBuf,'(A)') '// ' |
WRITE(msgBuf,'(A)') '// ' |
452 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
453 |
CALL WRITE_0D_R8( deltaTmom, INDEX_NONE,'deltaTmom =', |
CALL WRITE_0D_R8( deltaTmom, INDEX_NONE,'deltaTmom =', |
454 |
&' /* Momentum equation timestep ( s ) */') |
&' /* Momentum equation timestep ( s ) */') |
455 |
CALL WRITE_0D_R8( deltaTfreesurf,INDEX_NONE,'deltaTfreesurf =', |
CALL WRITE_0D_R8( deltaTfreesurf,INDEX_NONE,'deltaTfreesurf =', |
552 |
CALL WRITE_0D_R8( latBandClimRelax, INDEX_NONE, |
CALL WRITE_0D_R8( latBandClimRelax, INDEX_NONE, |
553 |
& 'latBandClimRelax =', ' /* max. Lat. where relaxation */') |
& 'latBandClimRelax =', ' /* max. Lat. where relaxation */') |
554 |
WRITE(msgBuf,'(A)') '// ' |
WRITE(msgBuf,'(A)') '// ' |
555 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
556 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
557 |
& '// Gridding paramters ( PARM04 in namelist ) ' |
& '// Gridding paramters ( PARM04 in namelist ) ' |
558 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
559 |
WRITE(msgBuf,'(A)') '// ' |
WRITE(msgBuf,'(A)') '// ' |
560 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
561 |
CALL WRITE_0D_L( usingCartesianGrid, INDEX_NONE, |
CALL WRITE_0D_L( usingCartesianGrid, INDEX_NONE, |
562 |
& 'usingCartesianGrid =', |
& 'usingCartesianGrid =', |
563 |
& ' /* Cartesian coordinates flag ( True/False ) */') |
& ' /* Cartesian coordinates flag ( True/False ) */') |
714 |
|
|
715 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
716 |
&'// =======================================================' |
&'// =======================================================' |
717 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
718 |
WRITE(msgBuf,'(A)') '// End of Model config. summary' |
WRITE(msgBuf,'(A)') '// End of Model config. summary' |
719 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
720 |
WRITE(msgBuf,'(A)') |
WRITE(msgBuf,'(A)') |
721 |
&'// =======================================================' |
&'// =======================================================' |
722 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
723 |
WRITE(msgBuf,'(A)') ' ' |
WRITE(msgBuf,'(A)') ' ' |
724 |
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, |
CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid ) |
|
& SQUEEZE_RIGHT, myThid ) |
|
725 |
|
|
726 |
_END_MASTER(myThid) |
_END_MASTER(myThid) |
727 |
_BARRIER |
_BARRIER |