C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_summary.F,v 1.30 2010/11/19 16:21:08 mlosch Exp $ C $Name: $ #include "SEAICE_OPTIONS.h" CBOP C !ROUTINE: SEAICE_SUMMARY SUBROUTINE SEAICE_SUMMARY( myThid ) C !DESCRIPTION: C *==========================================================* C | SUBROUTINE SEAICE_SUMMARY C | o Summarize pkg/seaice parameters. C *==========================================================* C !USES: IMPLICIT NONE C == global variables == #include "EEPARAMS.h" #include "SEAICE_PARAMS.h" C !INPUT PARAMETERS: C == routine arguments == C myThid - thread number for this instance of the routine. INTEGER myThid CEOP C !LOCAL VARIABLES: C == local variables == INTEGER il CHARACTER*(MAX_LEN_MBUF) msgBuf C == external == INTEGER ILNBLNK EXTERNAL C == end of interface == _BARRIER _BEGIN_MASTER(myThid) WRITE(msgBuf,'(A)') &' ' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) WRITE(msgBuf,'(A)') &'// =======================================================' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) WRITE(msgBuf,'(A)') &'// Seaice configuration (SEAICE_PARM01) >>> START <<<' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) WRITE(msgBuf,'(A)') &'// =======================================================' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) WRITE(msgBuf,'(A)') &' ' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) #ifdef SEAICE_CGRID CALL WRITE_0D_C( 'C-GRID', -1, INDEX_NONE, & 'model grid type =', ' /* type of sea ice model grid */') #else /* not SEAICE_CGRID */ CALL WRITE_0D_C( 'B-GRID', -1, INDEX_NONE, & 'model grid type =', ' /* type of sea ice model grid */') #endif /* SEAICE_CGRID */ CALL WRITE_0D_L ( SEAICEwriteState, INDEX_NONE, & 'SEAICEwriteState =', ' /* write sea ice state to file */') CALL WRITE_0D_L ( SEAICEuseDYNAMICS, INDEX_NONE, & 'SEAICEuseDYNAMICS =', ' /* use dynamics */') #ifdef SEAICE_CGRID CALL WRITE_0D_L ( SEAICEuseTEM, INDEX_NONE, & 'SEAICEuseTEM =', ' /* use truncated ellipse rheology */') CALL WRITE_0D_L ( SEAICEuseMetricTerms, INDEX_NONE, & 'SEAICEuseMetricTerms =', ' /* use metric terms */') #ifdef SEAICE_ALLOW_EVP CALL WRITE_0D_L ( SEAICEuseEVP, INDEX_NONE, & 'SEAICEuseEVP =', ' /* use EVP solver */') #endif /* SEAICE_ALLOW_EVP */ #ifdef SEAICE_ALLOW_FREEDRIFT CALL WRITE_0D_L ( SEAICEuseFREEDRIFT, INDEX_NONE, & 'SEAICEuseFREEDRIFT =', ' /* use free drift solution */') #endif /* SEAICE_ALLOW_FREEDRIFT */ CALL WRITE_0D_L ( SEAICE_no_slip, INDEX_NONE, & 'SEAICE_no_slip =', ' /* no slip boundary conditions */') CALL WRITE_0D_L ( SEAICE_maskRHS, INDEX_NONE, & 'SEAICE_maskRHS =', ' /* mask RHS of solver */') CALL WRITE_0D_L ( SEAICE_clipVelocities, INDEX_NONE, & 'SEAICE_clipVeloctities =', ' /* impose max. vels. */') CALL WRITE_0D_L ( useHB87stressCoupling, INDEX_NONE, & 'useHB87stressCoupling =', ' /* altern. ice-ocean stress */') #endif /* SEAICE_CGRID */ CALL WRITE_0D_L ( SEAICErestoreUnderIce, INDEX_NONE, & 'SEAICErestoreUnderIce =', ' /* restore T and S under ice */') CALL WRITE_0D_L ( usePW79thermodynamics, INDEX_NONE, & 'usePW79thermodynamics =', ' /* default 0-layer TD */') CALL WRITE_0D_L ( SEAICEadvHeff, INDEX_NONE, & 'SEAICEadvHeff =', ' /* advect effective ice thickness */') CALL WRITE_0D_L ( SEAICEadvArea, INDEX_NONE, & 'SEAICEadvArea =', ' /* advect fractional ice area */') CALL WRITE_0D_L ( SEAICEadvSnow, INDEX_NONE, & 'SEAICEadvSnow =', ' /* advect snow layer together with ice */') CALL WRITE_0D_L ( SEAICEadvSalt, INDEX_NONE, & 'SEAICEadvSalt =', ' /* advect salinity together with ice */') CALL WRITE_0D_L ( SEAICEuseFlooding, INDEX_NONE, & 'SEAICEuseFlooding =', ' /* turn submerged snow into ice */') CALL WRITE_0D_I ( LAD, INDEX_NONE, & 'LAD =', ' /* time stepping scheme */') CALL WRITE_0D_I ( IMAX_TICE, INDEX_NONE, & 'IMAX_TICE =', ' /* iterations for ice heat budget */') CALL WRITE_0D_I ( SEAICEadvScheme, INDEX_NONE, & 'SEAICEadvScheme =', ' /* advection scheme for ice */') IF ( SEAICEadvScheme .EQ. 2 ) & CALL WRITE_0D_L ( SEAICEuseFluxForm, INDEX_NONE, & 'SEAICEuseFluxForm =', ' /* advection in FV flux form */') IF ( SEAICEadvArea ) &CALL WRITE_0D_I ( SEAICEadvSchArea, INDEX_NONE, & 'SEAICEadvSchArea =', ' /* advection scheme for area */') IF ( SEAICEadvHeff ) &CALL WRITE_0D_I ( SEAICEadvSchHeff, INDEX_NONE, & 'SEAICEadvSchHeff =', ' /* advection scheme for thickness */') IF ( SEAICEadvSnow ) &CALL WRITE_0D_I ( SEAICEadvSchSnow, INDEX_NONE, & 'SEAICEadvSchSnow =', ' /* advection scheme for snow */') IF ( SEAICEadvSalt ) &CALL WRITE_0D_I ( SEAICEadvSchSalt, INDEX_NONE, & 'SEAICEadvSchSalt =', ' /* advection scheme for salt */') CALL WRITE_0D_RL( SEAICE_deltaTtherm,INDEX_NONE, & 'SEAICE_deltaTtherm=', ' /* thermodynamic timestep */') CALL WRITE_0D_RL( SEAICE_deltaTdyn ,INDEX_NONE, & 'SEAICE_deltaTdyn =', ' /* dynamic timestep */') #ifdef SEAICE_ALLOW_EVP CALL WRITE_0D_RL( SEAICE_deltaTevp ,INDEX_NONE, & 'SEAICE_deltaTevp =', ' /* EVP timestep */') CALL WRITE_0D_RL( SEAICE_elasticParm ,INDEX_NONE, & 'SEAICE_elasticParm=', ' /* EVP elastic parameter */') CALL WRITE_0D_RL( SEAICE_evpTauRelax ,INDEX_NONE, & 'SEAICE_evpTauRelax=', ' /* EVP relaxation timescale */') CALL WRITE_0D_RL( SEAICE_evpDampC ,INDEX_NONE, & 'SEAICE_evpDampC =', ' /* EVP damping parameter */') #endif CALL WRITE_0D_RL( SEAICE_availHeatFrac, INDEX_NONE, & 'SEAICE_availHeatFrac =', ' /* fraction used from melting */') CALL WRITE_0D_RL( SEAICE_gamma_t, INDEX_NONE, & 'SEAICE_gamma_t =', ' /* melting timescale due to warm ML*/') CALL WRITE_0D_RL( SEAICE_zetaMin ,INDEX_NONE, & 'SEAICE_zetaMin =', ' /* lower bound for viscosity */') CALL WRITE_0D_RL( SEAICE_monFreq, INDEX_NONE, & 'SEAICE_monFreq =',' /* monitor frequency */') CALL WRITE_0D_RL( SEAICE_dumpFreq ,INDEX_NONE, & 'SEAICE_dumpFreq =', ' /* dump frequency */') CALL WRITE_0D_RL( SEAICE_taveFreq ,INDEX_NONE, & 'SEAICE_taveFreq =', ' /* time-averaging frequency */') CALL WRITE_0D_L ( SEAICE_mon_stdio, INDEX_NONE, & 'SEAICE_mon_stdio =',' /* write monitor to std-outp */') CALL WRITE_0D_L ( SEAICE_dump_mdsio, INDEX_NONE, & 'SEAICE_dump_mdsio =',' /* write snap-shot using MDSIO */') CALL WRITE_0D_L ( SEAICE_tave_mdsio, INDEX_NONE, & 'SEAICE_tave_mdsio =',' /* write TimeAverage using MDSIO */') CALL WRITE_0D_L ( SEAICE_mon_mnc, INDEX_NONE, & 'SEAICE_mon_mnc =',' /* write monitor to netcdf file */') CALL WRITE_0D_L ( SEAICE_dump_mnc, INDEX_NONE, & 'SEAICE_dump_mnc =',' /* write snap-shot using MNC */') CALL WRITE_0D_L ( SEAICE_tave_mnc, INDEX_NONE, & 'SEAICE_tave_mnc =',' /* write TimeAverage using MNC */') CALL WRITE_0D_RL( SEAICE_initialHEFF,INDEX_NONE, & 'SEAICE_initialHEFF=', ' /* initial sea-ice thickness */') CALL WRITE_0D_RL( OCEAN_drag ,INDEX_NONE, & 'OCEAN_drag =', ' /* air-ocean drag coefficient */') CALL WRITE_0D_RL( SEAICE_drag ,INDEX_NONE, & 'SEAICE_drag =', ' /* air-ice drag coefficient */') CALL WRITE_0D_RL( SEAICE_waterDrag ,INDEX_NONE, & 'SEAICE_waterDrag =', ' /* water-ice drag * density */') CALL WRITE_0D_RL( SEAICE_dryIceAlb ,INDEX_NONE, & 'SEAICE_dryIceAlb =', ' /* winter albedo */') CALL WRITE_0D_RL( SEAICE_wetIceAlb ,INDEX_NONE, & 'SEAICE_wetIceAlb =', ' /* summer albedo */') CALL WRITE_0D_RL( SEAICE_drySnowAlb ,INDEX_NONE, & 'SEAICE_drySnowAlb =', ' /* dry snow albedo */') CALL WRITE_0D_RL( SEAICE_wetSnowAlb ,INDEX_NONE, & 'SEAICE_wetSnowAlb =', ' /* wet snow albedo */') CALL WRITE_0D_RL( HO ,INDEX_NONE, & 'HO =', ' /* demarcation ice thickness */') CALL WRITE_0D_RL( SEAICE_drag_south ,INDEX_NONE, & 'SEAICE_drag_south =', ' /* Southern Ocean SEAICE_drag */') CALL WRITE_0D_RL( SEAICE_waterDrag_south ,INDEX_NONE, & 'SEAICE_waterDrag_south =', ' /* Southern Ocean waterDrag */') CALL WRITE_0D_RL( SEAICE_dryIceAlb_south ,INDEX_NONE, & 'SEAICE_dryIceAlb_south =', ' /* Southern Ocean dryIceAlb */') CALL WRITE_0D_RL( SEAICE_wetIceAlb_south ,INDEX_NONE, & 'SEAICE_wetIceAlb_south =', ' /* Southern Ocean wetIceAlb */') CALL WRITE_0D_RL( SEAICE_drySnowAlb_south ,INDEX_NONE, & 'SEAICE_drySnowAlb_south=', ' /* Southern Ocean drySnowAlb */') CALL WRITE_0D_RL( SEAICE_wetSnowAlb_south ,INDEX_NONE, & 'SEAICE_wetSnowAlb_south=', ' /* Southern Ocean wetSnowAlb */') CALL WRITE_0D_RL( HO_south ,INDEX_NONE, & 'HO_south =', ' /* Southern Ocean HO */') CALL WRITE_0D_RL( SEAICE_waterAlbedo,INDEX_NONE, & 'SEAICE_waterAlbedo=', ' /* water albedo */') CALL WRITE_0D_RL( SEAICE_strength ,INDEX_NONE, & 'SEAICE_strength =', ' /* sea-ice strength Pstar */') CALL WRITE_0D_RL( SEAICE_cpAir ,INDEX_NONE, & 'SEAICE_cpAir =', ' /* heat capacity of air */') CALL WRITE_0D_RL( SEAICE_dalton ,INDEX_NONE, & 'SEAICE_dalton =', ' /* constant dalton number */') CALL WRITE_0D_RL( SEAICE_lhEvap ,INDEX_NONE, & 'SEAICE_lhEvap =', ' /* latent heat of evaporation */') CALL WRITE_0D_RL( SEAICE_lhFusion ,INDEX_NONE, & 'SEAICE_lhFusion =', ' /* latent heat of fusion */') CALL WRITE_0D_RL( SEAICE_lhSublim ,INDEX_NONE, & 'SEAICE_lhSublim =', ' /* latent heat of sublimation */') CALL WRITE_0D_RL( SEAICE_iceConduct ,INDEX_NONE, & 'SEAICE_iceConduct =', ' /* sea-ice conductivity */') CALL WRITE_0D_RL( SEAICE_snowConduct,INDEX_NONE, & 'SEAICE_snowConduct=', ' /* snow conductivity */') CALL WRITE_0D_RL( SEAICE_emissivity ,INDEX_NONE, & 'SEAICE_emissivity =', ' /* Stefan-Boltzman * emissivity */') CALL WRITE_0D_RL( SEAICE_snowThick ,INDEX_NONE, & 'SEAICE_snowThick =', ' /* cutoff snow thickness */') CALL WRITE_0D_RL( SEAICE_shortwave ,INDEX_NONE, & 'SEAICE_shortwave =', ' /* penetration shortwave radiation */') CALL WRITE_0D_RL( SEAICE_freeze ,INDEX_NONE, & 'SEAICE_freeze =', ' /* freezing temp. of sea water */') WRITE(msgBuf,'(a)') &'Initial sea-ice concentration is read from file:' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) il = ilnblnk(AreaFile) WRITE(msgBuf,'(A,A,A)') &' >> ',AreaFile(1:il),' <<' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) WRITE(msgBuf,'(A)') ' ; ' WRITE(msgBuf,'(a)') &'Initial sea-ice thickness is read from file:' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) il = ilnblnk(HeffFile) WRITE(msgBuf,'(A,A,A)') &' >> ',HeffFile(1:il),' <<' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) WRITE(msgBuf,'(A)') ' ; ' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) CALL WRITE_0D_I ( SOLV_MAX_ITERS, INDEX_NONE, & 'SOLV_MAX_ITERS =', ' /* max. number of LSR solver steps */') CALL WRITE_0D_I ( SOLV_NCHECK, INDEX_NONE, & 'SOLV_NCHECK =', ' /* test interval for LSR solver */') CALL WRITE_0D_I ( NPSEUDOTIMESTEPS, INDEX_NONE, & 'NPSEUDOTIMESTEPS =', ' /* num. of extra pseudo time steps */') CALL WRITE_0D_RL( LSR_ERROR ,INDEX_NONE, & 'LSR_ERROR =', ' /* sets accuracy of LSR solver */') CALL WRITE_0D_RL( DIFF1 ,INDEX_NONE, & 'DIFF1 =', ' /* parameter used in advect.F */') CALL WRITE_0D_RL( A22 ,INDEX_NONE, & 'A22 =', ' /* parameter used in growth.F */') #ifndef SEAICE_CAP_HEFF WRITE(msgBuf,'(A,A)') & 'MAX_HEFF has no effect because SEAICE_CAP_HEFF is undefined' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) #endif /* SEAICE_CAP_HEFF */ CALL WRITE_0D_RL( MAX_HEFF ,INDEX_NONE, & 'MAX_HEFF =', ' /* maximum ice thickness */') CALL WRITE_0D_RL( MIN_ATEMP ,INDEX_NONE, & 'MIN_ATEMP =', ' /* minimum air temperature */') CALL WRITE_0D_RL( MIN_LWDOWN ,INDEX_NONE, & 'MIN_LWDOWN =', ' /* minimum downward longwave */') CALL WRITE_0D_RL( MAX_TICE ,INDEX_NONE, & 'MAX_TICE =', ' /* maximum ice temperature */') CALL WRITE_0D_RL( MIN_TICE ,INDEX_NONE, & 'MIN_TICE =', ' /* minimum ice temperature */') CALL WRITE_0D_RL( SEAICE_EPS ,INDEX_NONE, & 'SEAICE_EPS =', ' /* reduce derivative singularities */') WRITE(msgBuf,'(A)') &'// =======================================================' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) WRITE(msgBuf,'(A)') &'// Seaice configuration (SEAICE_PARM01) >>> END <<<' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) WRITE(msgBuf,'(A)') &'// =======================================================' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , myThid) WRITE(msgBuf,'(A)') _END_MASTER(myThid) _BARRIER RETURN END