C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_check.F,v 1.5 2014/10/12 21:55:02 dgoldberg Exp $ C $Name: $ #include "STREAMICE_OPTIONS.h" C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: STREAMICE_CHECK C !INTERFACE: SUBROUTINE STREAMICE_CHECK( myThid ) C !DESCRIPTION: C Check dependances with other packages C !USES: IMPLICIT NONE #include "SIZE.h" #include "GRID.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "STREAMICE.h" #include "STREAMICE_CG.h" #include "STREAMICE_BDRY.h" C !INPUT PARAMETERS: INTEGER myThid CEOP #ifdef ALLOW_STREAMICE C !LOCAL VARIABLES: C msgBuf :: Informational/error message buffer CHARACTER*(MAX_LEN_MBUF) msgBuf CHARACTER*(10) fname INTEGER m,n,k _BEGIN_MASTER(myThid) WRITE(msgBuf,'(A)') 'STREAMICE_CHECK: #define STREAMICE' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , 1) C- write out integer parameters CALL WRITE_0D_I( streamice_max_cg_iter, INDEX_NONE, & ' max cg interations =', & ' /* user defined parameter */') CALL WRITE_0D_I( streamice_max_nl_iter, INDEX_NONE, & ' max nonlin interations =', & ' /* user defined parameter */') CALL WRITE_0D_I( streamice_nstep_velocity, INDEX_NONE, & ' # of timesteps per velocity solve =', & ' /* user defined parameter */') C- write out real parameters CALL WRITE_0D_RL( streamice_density, INDEX_NONE, & ' streamice_density =', ' /* user defined parameter */') CALL WRITE_0D_RL( streamice_density_ocean_avg, INDEX_NONE, & ' streamice_density_ocean_avg =', & ' /* user defined parameter */') CALL WRITE_0D_RL( B_glen_isothermal, INDEX_NONE, & ' glens law stifness =', & ' /* user defined parameter */') CALL WRITE_0D_RL( n_glen, INDEX_NONE, & ' glens law exponent =', & ' /* user defined parameter */') CALL WRITE_0D_RL( C_basal_fric_const, INDEX_NONE, & ' basal trac coeff =', & ' /* user defined parameter */') CALL WRITE_0D_RL( n_basal_friction, INDEX_NONE, & ' basal exponent =', & ' /* user defined parameter */') CALL WRITE_0D_RL( streamice_input_flux_unif, INDEX_NONE, & ' uniform input flux (m^2/a) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( streamice_vel_update, INDEX_NONE, & ' time for ice vel update (sec) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( streamice_cg_tol, INDEX_NONE, & ' conj grad tolerance =', & ' /* user defined parameter */') CALL WRITE_0D_RL( streamice_nonlin_tol, INDEX_NONE, & ' ice velocity nonlinear iter tol =', & ' /* user defined parameter */') CALL WRITE_0D_RL( shelf_max_draft, INDEX_NONE, & ' max shelf draft for analytic init (m) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( shelf_min_draft, INDEX_NONE, & ' min shelf draft for analytic init (m) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( shelf_edge_pos, INDEX_NONE, & ' shelf extent for analytic init (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( shelf_slope_scale, INDEX_NONE, & ' slope scale for analytic init (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( shelf_flat_width, INDEX_NONE, & ' flat shelf width for analytic init (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( flow_dir, INDEX_NONE, & ' flow direction for analytic init =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_x_noflow_NORTH, INDEX_NONE, & ' min range on no bd for no-slip (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_x_noflow_NORTH, INDEX_NONE, & ' max range on no bd for no-slip (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_x_noflow_SOUTH, INDEX_NONE, & ' min range on so bd for no-slip (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_x_noflow_SOUTH, INDEX_NONE, & ' max range on so bd for no-slip (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_y_noflow_EAST, INDEX_NONE, & ' min range on east bd for no-slip (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_y_noflow_EAST, INDEX_NONE, & ' max range on east bd for no-slip (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_y_noflow_WEST, INDEX_NONE, & ' min range on west bd for no-slip (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_y_noflow_WEST, INDEX_NONE, & ' max range on west bd for no-slip (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_x_noStress_NORTH, INDEX_NONE, & ' min range on no bd for no-stress (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_x_noStress_NORTH, INDEX_NONE, & ' max range on no bd for no-stress (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_x_noStress_SOUTH, INDEX_NONE, & ' min range on so bd for no-stress (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_x_noStress_SOUTH, INDEX_NONE, & ' max range on so bd for no-stress (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_y_noStress_EAST, INDEX_NONE, & ' min range on east bd for no-stress (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_y_noStress_EAST, INDEX_NONE, & ' max range on east bd for no-stress (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_y_noStress_WEST, INDEX_NONE, & ' min range on west bd for no-stress (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_y_noStress_WEST, INDEX_NONE, & ' max range on west bd for no-stress (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_x_FluxBdry_NORTH, INDEX_NONE, & ' min range on no bd for FluxBdry (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_x_FluxBdry_NORTH, INDEX_NONE, & ' max range on no bd for FluxBdry (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_x_FluxBdry_SOUTH, INDEX_NONE, & ' min range on so bd for FluxBdry (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_x_FluxBdry_SOUTH, INDEX_NONE, & ' max range on so bd for FluxBdry (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_y_FluxBdry_EAST, INDEX_NONE, & ' min range on east bd for FluxBdry (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_y_FluxBdry_EAST, INDEX_NONE, & ' max range on east bd for FluxBdry (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_y_FluxBdry_WEST, INDEX_NONE, & ' min range on west bd for FluxBdry (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_y_FluxBdry_WEST, INDEX_NONE, & ' max range on west bd for FluxBdry (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_x_Dirich_NORTH, INDEX_NONE, & ' min range on no bd for Dirich (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_x_Dirich_NORTH, INDEX_NONE, & ' max range on no bd for Dirich (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_x_Dirich_SOUTH, INDEX_NONE, & ' min range on so bd for Dirich (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_x_Dirich_SOUTH, INDEX_NONE, & ' max range on so bd for Dirich (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_y_Dirich_EAST, INDEX_NONE, & ' min range on east bd for Dirich (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_y_Dirich_EAST, INDEX_NONE, & ' max range on east bd for Dirich (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_y_Dirich_WEST, INDEX_NONE, & ' min range on west bd for Dirich (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_y_Dirich_WEST, INDEX_NONE, & ' max range on west bd for Dirich (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_x_CFBC_NORTH, INDEX_NONE, & ' min range on no bd for CFBC (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_x_CFBC_NORTH, INDEX_NONE, & ' max range on no bd for CFBC (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_x_CFBC_SOUTH, INDEX_NONE, & ' min range on so bd for CFBC (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_x_CFBC_SOUTH, INDEX_NONE, & ' max range on so bd for CFBC (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_y_CFBC_EAST, INDEX_NONE, & ' min range on east bd for CFBC (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_y_CFBC_EAST, INDEX_NONE, & ' max range on east bd for CFBC (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( min_y_CFBC_WEST, INDEX_NONE, & ' min range on west bd for CFBC (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( max_y_CFBC_WEST, INDEX_NONE, & ' max range on west bd for CFBC (km) =', & ' /* user defined parameter */') CALL WRITE_0D_RL( flux_bdry_val_NORTH, INDEX_NONE, & ' val (m^2/a) for north flux bdry =', & ' /* user defined parameter */') CALL WRITE_0D_RL( flux_bdry_val_SOUTH, INDEX_NONE, & ' val (m^2/a) for south flux bdry =', & ' /* user defined parameter */') CALL WRITE_0D_RL( flux_bdry_val_EAST, INDEX_NONE, & ' val (m^2/a) for east flux bdry =', & ' /* user defined parameter */') CALL WRITE_0D_RL( flux_bdry_val_WEST, INDEX_NONE, & ' val (m^2/a) for west flux bdry =', & ' /* user defined parameter */') C- write out logical parameters CALL WRITE_0D_L( STREAMICE_dump_mdsio, INDEX_NONE, & ' streamice_dump_mdsio =', ' /* user defined parameter */') CALL WRITE_0D_L( STREAMICE_dump_mdsio, INDEX_NONE, & ' streamice_dump_mdsio =', ' /* user defined parameter */') CALL WRITE_0D_L( STREAMICE_dump_mnc, INDEX_NONE, & ' streamice_dump_mnc =', ' /* user defined parameter */') CALL WRITE_0D_L( STREAMICE_tave_mnc, INDEX_NONE, & ' streamice_tave_mnc =', ' /* user defined parameter */') ! CALL WRITE_0D_L( STREAMICE_GL_regularize, INDEX_NONE, ! & ' streamice_GL_regularize =', ' /* user defined parameter */') CALL WRITE_0D_L( STREAMICE_move_front, INDEX_NONE, & ' streamice_move_front =', ' /* user defined parameter */') CALL WRITE_0D_L( STREAMICE_calve_to_mask, INDEX_NONE, & ' streamice_calve_to_mask =', ' /* user defined parameter */') C- write out string parameters CALL WRITE_0D_C( STREAMICEthickInit,-1,INDEX_NONE, & 'STREAMICEthickInit =', & ' /* user defined parameter */') CALL WRITE_0D_C( STREAMICEthickFile,-1,INDEX_NONE, & 'STREAMICEthickFile =', & ' /* user defined parameter */') CALL WRITE_0D_C( STREAMICEcalveMaskFile,-1,INDEX_NONE, & 'STREAMICEcalveMaskFile =', & ' /* user defined parameter */') C- Put stops here if some flags are wrongly chosen. C- For example, require this package to use tempStepping _END_MASTER(myThid) C write init_thickness array to a binary file ! CALL WRITE_FLD_XY_RL ( "H_streamIce", "init", ! & H_streamIce, 0, myThid ) ! CALL WRITE_FLD_XY_RL ( "area_shelf_streamice", "init", ! & area_shelf_streamice, 0, myThid ) ! CALL WRITE_FLD_XY_RL ( "STREAMICE_hmask", "init", ! & STREAMICE_hmask, 0, myThid ) ! CALL WRITE_FLD_XY_RL ( "base_el_streamice", "init", ! & base_el_streamice, 0, myThid ) ! CALL WRITE_FLD_XY_RL ( "ssurf_el_streamice", "init", ! & surf_el_streamice, 0, myThid ) ! DO m=1,4 ! DO n=1,4 ! DO k=1,2 ! WRITE(fname,'(A,I1,A,I1,A,I1)') ! & "Dphi_", m, "_", n, "_", k ! CALL WRITE_FLD_XY_RL (fname, "", ! & Dphi(:,:,:,:,m,n,k),0,myThid) ! ENDDO ! ENDDO ! ENDDO CALL WRITE_FLD_XY_RL ( "k1AtC_str", "out", & k1AtC_str, 0, myThid ) CALL WRITE_FLD_XY_RL ( "k2AtC_str", "out", & k2AtC_str, 0, myThid ) CALL WRITE_FLD_XY_RS ( "STREAMICE_ufacemask_bdry", "out", & STREAMICE_ufacemask_bdry, 0, myThid ) CALL WRITE_FLD_XY_RS ( "STREAMICE_vfacemask_bdry", "out", & STREAMICE_vfacemask_bdry, 0, myThid ) CALL WRITE_FLD_XY_RL ( "u_bdry_values_SI", "out", & u_bdry_values_SI, 0, myThid ) CALL WRITE_FLD_XY_RL ( "v_bdry_values_SI", "out", & v_bdry_values_SI, 0, myThid ) CALL WRITE_FLD_XY_RL ( "u_flux_bdry_SI", "out", & u_flux_bdry_SI, 0, myThid ) CALL WRITE_FLD_XY_RL ( "v_flux_bdry_SI", "out", & v_flux_bdry_SI, 0, myThid ) #endif /* ALLOW_STREAMICE */ RETURN END