diff --git a/config/namelist.io.nextGEMS b/config/namelist.io.nextGEMS new file mode 100644 index 000000000..c2b40ab64 --- /dev/null +++ b/config/namelist.io.nextGEMS @@ -0,0 +1,53 @@ +&diag_list +ldiag_solver =.false. +lcurt_stress_surf=.false. +ldiag_curl_vel3 =.false. +ldiag_Ri =.false. +ldiag_turbflux =.false. +ldiag_salt3D =.false. +ldiag_dMOC =.false. +ldiag_DVD =.false. +ldiag_forc =.false. +ldiag_extflds =.false. +/ + +&nml_general +io_listsize =100 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list +vec_autorotate =.false. +lnextGEMS=.true. +nlev_upper=10 +/ + +! for sea ice related variables use_ice should be true, otherewise there will be no output +! for 'curl_surf' to work lcurt_stress_surf must be .true. otherwise no output +! for 'fer_C', 'bolus_u', 'bolus_v', 'bolus_w', 'fer_K' to work Fer_GM must be .true. otherwise no output +! 'otracers' - all other tracers if applicable +! for 'dMOC' to work ldiag_dMOC must be .true. otherwise no output +&nml_list +io_list = 'sst ',1, 'm', 4, + 'sss ',1, 'm', 4, + 'ssh ',1, 'm', 4, + 'uice ',1, 'm', 4, + 'vice ',1, 'm', 4, + 'a_ice ',1, 'm', 4, + 'm_ice ',1, 'm', 4, + 'm_snow ',1, 'm', 4, + 'MLD1 ',1, 'm', 4, + 'MLD2 ',1, 'm', 4, + 'MLD3 ',1, 'm', 4, + 'tx_sur ',1, 'm', 4, + 'ty_sur ',1, 'm', 4, + 'temp ',3, 'h', 4, + 'salt ',3, 'h', 8, + 'N2 ',1, 'y', 4, + 'Kv ',1, 'y', 4, + 'u ',3, 'h', 4, + 'v ',3, 'h', 4, + 'unod ',1, 'y', 4, + 'vnod ',1, 'y', 4, + 'w ',3, 'h', 4, + 'Av ',1, 'y', 4, + 'bolus_u ',1, 'y', 4, + 'bolus_v ',1, 'y', 4, + 'bolus_w ',1, 'y', 4, +/ diff --git a/src/ifs_interface/ifs_interface.F90 b/src/ifs_interface/ifs_interface.F90 index 0e4e2b6db..03aba0b48 100644 --- a/src/ifs_interface/ifs_interface.F90 +++ b/src/ifs_interface/ifs_interface.F90 @@ -832,7 +832,7 @@ SUBROUTINE nemogcmcoup_lim2_update( mype, npes, icomm, & ice_heat_flux=0. ! Done. This is qns__ice currently. Is this the non-solar heat flux? ! non solar heat fluxes below ! (qns) oce_heat_flux=0. ! Done. This is qns__oce currently. Is this the non-solar heat flux? ! - runoff(:)=0. ! not used apparently. What is runoffIN, ocerunoff? + !runoff(:)=0. ! not used apparently. What is runoffIN, ocerunoff? !evaporation(:)=0. !ice_thermo_cpl.F90: !---- total evaporation (needed in oce_salt_balance.F90) !ice_thermo_cpl.F90: evaporation = evap_no_ifrac*(1.-a_ice) + sublimation*a_ice diff --git a/src/io_meandata.F90 b/src/io_meandata.F90 index 5e6b0894f..05f463d9a 100644 --- a/src/io_meandata.F90 +++ b/src/io_meandata.F90 @@ -64,6 +64,8 @@ module io_MEANDATA ! integer, save :: io_listsize =0 logical, save :: vec_autorotate=.FALSE. + logical, save :: lnextGEMS=.FALSE. + integer, save :: nlev_upper=1 type io_entry CHARACTER(len=15) :: id ='unknown ' INTEGER :: freq =0 @@ -132,7 +134,7 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) type(t_tracer), intent(in) , target :: tracers type(t_dyn) , intent(in) , target :: dynamics type(t_ice) , intent(in) , target :: ice - namelist /nml_general / io_listsize, vec_autorotate + namelist /nml_general / io_listsize, vec_autorotate, lnextGEMS, nlev_upper namelist /nml_list / io_list #include "associate_part_def.h" @@ -617,7 +619,13 @@ subroutine ini_mean_io(ice, dynamics, tracers, partit, mesh) END SELECT ! --> SELECT CASE (trim(io_list(i)%id)) END DO ! --> DO i=1, io_listsize - + if (lnextGEMS) then + call def_stream((/nlev_upper, nod2D/), (/nlev_upper, myDim_nod2D/), 'temp_upper', 'temperature', 'C', tracers%data(1)%values(:nlev_upper,:), 3, 'h', 4, partit, mesh) + call def_stream((/nlev_upper, nod2D/), (/nlev_upper, myDim_nod2D/), 'salt_upper', 'salinity', 'psu', tracers%data(2)%values(:nlev_upper,:), 3, 'h', 8, partit, mesh) + call def_stream((/nlev_upper, elem2D/), (/nlev_upper, myDim_elem2D/), 'u_upper', 'zonal velocity','m/s', dynamics%uv(1,:nlev_upper,:), 3, 'h', 4, partit, mesh) + call def_stream((/nlev_upper, elem2D/), (/nlev_upper, myDim_elem2D/), 'v_upper', 'meridional velocity','m/s', dynamics%uv(2,:nlev_upper,:), 3, 'h', 4, partit, mesh) + call def_stream((/nlev_upper+1, nod2D/), (/nlev_upper+1, myDim_nod2D/), 'w_upper', 'vertical velocity', 'm/s', dynamics%w(:nlev_upper+1,:), 3, 'h', 4, partit, mesh) + end if !___________________________________________________________________________ ! Richardson number diagnostics if (ldiag_Ri) then