- Timestamp:
- 2020-06-24T14:38:26+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12527_Gurvan_ShallowWater/src/SWE/diawri.F90
r12667 r13151 85 85 !! * Substitutions 86 86 # include "do_loop_substitute.h90" 87 !!st12 88 # include "domzgr_substitute.h90" 87 89 !!---------------------------------------------------------------------- 88 90 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 137 139 CALL iom_put("e3v_0", e3v_0(:,:,:) ) 138 140 ! 139 CALL iom_put( "e3t" , e3t(:,:,:,Kmm) ) 140 CALL iom_put( "e3u" , e3u(:,:,:,Kmm) ) 141 CALL iom_put( "e3v" , e3v(:,:,:,Kmm) ) 142 CALL iom_put( "e3w" , e3w(:,:,:,Kmm) ) 143 IF( iom_use("e3tdef") ) & 144 CALL iom_put( "e3tdef" , ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 145 141 !!st13 142 #if ! defined key_qco 143 IF ( iom_use("e3t") .OR. iom_use("e3tdef") ) THEN ! time-varying e3t 144 DO jk = 1, jpk 145 z3d(:,:,jk) = e3t(:,:,jk,Kmm) 146 END DO 147 CALL iom_put( "e3t" , z3d(:,:,:) ) 148 CALL iom_put( "e3tdef" , ( ( z3d(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 149 ENDIF 150 IF ( iom_use("e3u") ) THEN ! time-varying e3u 151 DO jk = 1, jpk 152 z3d(:,:,jk) = e3u(:,:,jk,Kmm) 153 END DO 154 CALL iom_put( "e3u" , z3d(:,:,:) ) 155 ENDIF 156 IF ( iom_use("e3v") ) THEN ! time-varying e3v 157 DO jk = 1, jpk 158 z3d(:,:,jk) = e3v(:,:,jk,Kmm) 159 END DO 160 CALL iom_put( "e3v" , z3d(:,:,:) ) 161 ENDIF 162 IF ( iom_use("e3w") ) THEN ! time-varying e3w 163 DO jk = 1, jpk 164 z3d(:,:,jk) = e3w(:,:,jk,Kmm) 165 END DO 166 CALL iom_put( "e3w" , z3d(:,:,:) ) 167 ENDIF 168 #endif 169 !!st13 146 170 IF( ll_wd ) THEN 147 171 CALL iom_put( "ssh" , (ssh(:,:,Kmm)+ssh_ref)*tmask(:,:,1) ) ! sea surface height (brought back to the reference used for wetting and drying) … … 351 375 ! 352 376 REAL(wp), DIMENSION(jpi,jpj) :: zw2d ! 2D workspace 353 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d ! 3D workspace 377 !!st14 378 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d, ze3t, zgdept ! 3D workspace 354 379 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: zw3d_abl ! ABL 3D workspace 355 380 !!---------------------------------------------------------------------- … … 391 416 it = kt 392 417 itmod = kt - nit000 + 1 393 418 !!st15 419 ! store e3t for subsitute 420 DO jk = 1, jpk 421 ze3t (:,:,jk) = e3t (:,:,jk,Kmm) 422 zgdept(:,:,jk) = gdept(:,:,jk,Kmm) 423 END DO 424 !!st15 394 425 395 426 ! 1. Define NETCDF files and fields at beginning of first time step … … 514 545 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 515 546 IF( .NOT.ln_linssh ) THEN 516 CALL histdef( nid_T, "vovvle3t", "Level thickness" , "m" ,& ! e3t(:,:,:,Kmm)547 CALL histdef( nid_T, "vovvle3t", "Level thickness" , "m" ,& ! ze3t(:,:,:,Kmm) 517 548 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 518 CALL histdef( nid_T, "vovvldep", "T point depth" , "m" ,& ! e3t(:,:,:,Kmm)549 CALL histdef( nid_T, "vovvldep", "T point depth" , "m" ,& ! ze3t(:,:,:,Kmm) 519 550 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 520 CALL histdef( nid_T, "vovvldef", "Squared level deformation" , "%^2" ,& ! e3t(:,:,:,Kmm)551 CALL histdef( nid_T, "vovvldef", "Squared level deformation" , "%^2" ,& ! ze3t(:,:,:,Kmm) 521 552 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 522 553 ENDIF … … 700 731 WRITE(numout,*) '~~~~~~ ' 701 732 ENDIF 702 733 !!st16 703 734 IF( .NOT.ln_linssh ) THEN 704 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T ) ! heat content 705 CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * e3t(:,:,:,Kmm) , ndim_T , ndex_T ) ! salt content 706 CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT ) ! sea surface heat content 707 CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) * e3t(:,:,1,Kmm) , ndim_hT, ndex_hT ) ! sea surface salinity content 735 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) * ze3t(:,:,:) , ndim_T , ndex_T ) ! heat content 736 CALL histwrite( nid_T, "vosaline", it, ts(:,:,:,jp_sal,Kmm) * ze3t(:,:,:) , ndim_T , ndex_T ) ! salt content 737 CALL histwrite( nid_T, "sosstsst", it, ts(:,:,1,jp_tem,Kmm) * ze3t(:,:,1) , ndim_hT, ndex_hT ) ! sea surface heat content 738 CALL histwrite( nid_T, "sosaline", it, ts(:,:,1,jp_sal,Kmm) * ze3t(:,:,1) , ndim_hT, ndex_hT ) ! sea surface salinity content 739 !!st16 708 740 ELSE 709 741 CALL histwrite( nid_T, "votemper", it, ts(:,:,:,jp_tem,Kmm) , ndim_T , ndex_T ) ! temperature … … 713 745 ENDIF 714 746 IF( .NOT.ln_linssh ) THEN 715 zw3d(:,:,:) = ( ( e3t(:,:,:,Kmm) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 716 CALL histwrite( nid_T, "vovvle3t", it, e3t (:,:,:,Kmm) , ndim_T , ndex_T ) ! level thickness 717 CALL histwrite( nid_T, "vovvldep", it, gdept(:,:,:,Kmm) , ndim_T , ndex_T ) ! t-point depth 747 !!st17 if ! defined key_qco 748 zw3d(:,:,:) = ( ( ze3t(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 749 CALL histwrite( nid_T, "vovvle3t", it, ze3t (:,:,:) , ndim_T , ndex_T ) ! level thickness 750 CALL histwrite( nid_T, "vovvldep", it, zgdept , ndim_T , ndex_T ) ! t-point depth 751 !!st17 718 752 CALL histwrite( nid_T, "vovvldef", it, zw3d , ndim_T , ndex_T ) ! level thickness deformation 719 753 ENDIF … … 854 888 !! 855 889 INTEGER :: inum, jk 890 !!st18 TBR 891 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t, zgdept ! 3D workspace !!st patch to use substitution 856 892 !!---------------------------------------------------------------------- 857 893 ! … … 860 896 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~ and forcing fields file created ' 861 897 IF(lwp) WRITE(numout,*) ' and named :', cdfile_name, '...nc' 862 898 !!st19 TBR 899 DO jk = 1, jpk 900 ze3t(:,:,jk) = e3t(:,:,jk,Kmm) 901 zgdept(:,:,jk) = gdept(:,:,jk,Kmm) 902 END DO 903 !!st19 863 904 #if defined key_si3 864 905 CALL iom_open( TRIM(cdfile_name), inum, ldwrt = .TRUE., kdlev = jpl ) … … 878 919 ENDIF 879 920 CALL iom_rstput( 0, 0, inum, 'risfdep', risfdep ) ! now k-velocity 880 CALL iom_rstput( 0, 0, inum, 'ht' , ht 921 CALL iom_rstput( 0, 0, inum, 'ht' , ht(:,:) ) ! now water column height 881 922 882 923 IF ( ln_isf ) THEN … … 885 926 CALL iom_rstput( 0, 0, inum, 'rhisf_cav_tbl', rhisf_tbl_cav ) ! now k-velocity 886 927 CALL iom_rstput( 0, 0, inum, 'rfrac_cav_tbl', rfrac_tbl_cav ) ! now k-velocity 887 CALL iom_rstput( 0, 0, inum, 'misfkb_cav', REAL(misfkb_cav, 8)) ! now k-velocity888 CALL iom_rstput( 0, 0, inum, 'misfkt_cav', REAL(misfkt_cav, 8)) ! now k-velocity889 CALL iom_rstput( 0, 0, inum, 'mskisf_cav', REAL(mskisf_cav, 8), ktype = jp_i1 )928 CALL iom_rstput( 0, 0, inum, 'misfkb_cav', REAL(misfkb_cav,wp) ) ! now k-velocity 929 CALL iom_rstput( 0, 0, inum, 'misfkt_cav', REAL(misfkt_cav,wp) ) ! now k-velocity 930 CALL iom_rstput( 0, 0, inum, 'mskisf_cav', REAL(mskisf_cav,wp), ktype = jp_i1 ) 890 931 END IF 891 932 IF (ln_isfpar_mlt) THEN 892 CALL iom_rstput( 0, 0, inum, 'isfmsk_par', REAL(mskisf_par, 8)) ! now k-velocity933 CALL iom_rstput( 0, 0, inum, 'isfmsk_par', REAL(mskisf_par,wp) ) ! now k-velocity 893 934 CALL iom_rstput( 0, 0, inum, 'fwfisf_par', fwfisf_par ) ! now k-velocity 894 935 CALL iom_rstput( 0, 0, inum, 'rhisf_par_tbl', rhisf_tbl_par ) ! now k-velocity 895 936 CALL iom_rstput( 0, 0, inum, 'rfrac_par_tbl', rfrac_tbl_par ) ! now k-velocity 896 CALL iom_rstput( 0, 0, inum, 'misfkb_par', REAL(misfkb_par, 8)) ! now k-velocity897 CALL iom_rstput( 0, 0, inum, 'misfkt_par', REAL(misfkt_par, 8)) ! now k-velocity898 CALL iom_rstput( 0, 0, inum, 'mskisf_par', REAL(mskisf_par, 8), ktype = jp_i1 )937 CALL iom_rstput( 0, 0, inum, 'misfkb_par', REAL(misfkb_par,wp) ) ! now k-velocity 938 CALL iom_rstput( 0, 0, inum, 'misfkt_par', REAL(misfkt_par,wp) ) ! now k-velocity 939 CALL iom_rstput( 0, 0, inum, 'mskisf_par', REAL(mskisf_par,wp), ktype = jp_i1 ) 899 940 END IF 900 941 END IF 901 942 ! 902 943 IF( ALLOCATED(ahtu) ) THEN 903 944 CALL iom_rstput( 0, 0, inum, 'ahtu', ahtu ) ! aht at u-point … … 914 955 CALL iom_rstput( 0, 0, inum, 'sozotaux', utau ) ! i-wind stress 915 956 CALL iom_rstput( 0, 0, inum, 'sometauy', vtau ) ! j-wind stress 916 IF( .NOT.ln_linssh ) THEN 917 CALL iom_rstput( 0, 0, inum, 'vovvldep', gdept(:,:,:,Kmm) ) ! T-cell depth 918 CALL iom_rstput( 0, 0, inum, 'vovvle3t', e3t(:,:,:,Kmm) ) ! T-cell thickness 957 !!st20 TBR 958 IF( .NOT.ln_linssh ) THEN 959 CALL iom_rstput( 0, 0, inum, 'vovvldep', zgdept ) ! T-cell depth 960 CALL iom_rstput( 0, 0, inum, 'vovvle3t', ze3t ) ! T-cell thickness 919 961 END IF 920 962 IF( ln_wave .AND. ln_sdw ) THEN
Note: See TracChangeset
for help on using the changeset viewer.