Changeset 7646 for trunk/NEMOGCM/NEMO/SAS_SRC/sbcssm.F90
- Timestamp:
- 2017-02-06T10:25:03+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/SAS_SRC/sbcssm.F90
r6140 r7646 39 39 LOGICAL :: ln_3d_uve !: specify whether input velocity data is 3D 40 40 LOGICAL :: ln_read_frq !: specify whether we must read frq or not 41 LOGICAL :: l_sasread !: Ice intilisation: read a file (.TRUE.) or anaytical initilaistion in namelist &namsbc_sas 41 42 LOGICAL :: l_initdone = .false. 42 43 INTEGER :: nfld_3d … … 81 82 ! 82 83 IF( nn_timing == 1 ) CALL timing_start( 'sbc_ssm') 83 84 IF( nfld_3d > 0 ) CALL fld_read( kt, 1, sf_ssm_3d ) !== read data at kt time step ==! 85 IF( nfld_2d > 0 ) CALL fld_read( kt, 1, sf_ssm_2d ) !== read data at kt time step ==! 86 ! 87 IF( ln_3d_uve ) THEN 88 ssu_m(:,:) = sf_ssm_3d(jf_usp)%fnow(:,:,1) * umask(:,:,1) ! u-velocity 89 ssv_m(:,:) = sf_ssm_3d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1) ! v-velocity 90 IF( .NOT.ln_linssh ) e3t_m(:,:) = sf_ssm_3d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1) ! v-velocity 84 85 IF ( l_sasread ) THEN 86 IF( nfld_3d > 0 ) CALL fld_read( kt, 1, sf_ssm_3d ) !== read data at kt time step ==! 87 IF( nfld_2d > 0 ) CALL fld_read( kt, 1, sf_ssm_2d ) !== read data at kt time step ==! 88 ! 89 IF( ln_3d_uve ) THEN 90 IF( .NOT. ln_linssh ) e3t_m(:,:) = sf_ssm_3d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1) ! v-velocity 91 ssu_m(:,:) = sf_ssm_3d(jf_usp)%fnow(:,:,1) * umask(:,:,1) ! u-velocity 92 ssv_m(:,:) = sf_ssm_3d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1) ! v-velocity 93 ELSE 94 IF( .NOT. ln_linssh ) e3t_m(:,:) = sf_ssm_2d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1) ! v-velocity 95 ssu_m(:,:) = sf_ssm_2d(jf_usp)%fnow(:,:,1) * umask(:,:,1) ! u-velocity 96 ssv_m(:,:) = sf_ssm_2d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1) ! v-velocity 97 ENDIF 98 ! 99 sst_m(:,:) = sf_ssm_2d(jf_tem)%fnow(:,:,1) * tmask(:,:,1) ! temperature 100 sss_m(:,:) = sf_ssm_2d(jf_sal)%fnow(:,:,1) * tmask(:,:,1) ! salinity 101 ssh_m(:,:) = sf_ssm_2d(jf_ssh)%fnow(:,:,1) * tmask(:,:,1) ! sea surface height 102 IF( ln_read_frq ) THEN 103 frq_m(:,:) = sf_ssm_2d(jf_frq)%fnow(:,:,1) * tmask(:,:,1) ! solar penetration 104 ELSE 105 frq_m(:,:) = 1._wp 106 ENDIF 91 107 ELSE 92 ss u_m(:,:) = sf_ssm_2d(jf_usp)%fnow(:,:,1) * umask(:,:,1) ! u-velocity93 ss v_m(:,:) = sf_ssm_2d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1) ! v-velocity94 IF( .NOT.ln_linssh ) e3t_m(:,:) = sf_ssm_2d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1) ! v-velocity95 ENDIF96 !97 sst_m(:,:) = sf_ssm_2d(jf_tem)%fnow(:,:,1) * tmask(:,:,1) ! temperature98 sss_m(:,:) = sf_ssm_2d(jf_sal)%fnow(:,:,1) * tmask(:,:,1) ! salinity99 ssh_m(:,:) = sf_ssm_2d(jf_ssh)%fnow(:,:,1) * tmask(:,:,1) ! sea surface height100 IF( ln_read_frq ) frq_m(:,:) = sf_ssm_2d(jf_frq)%fnow(:,:,1) * tmask(:,:,1) ! sea surface height101 !108 sst_m(:,:) = 0._wp 109 sss_m(:,:) = 0._wp 110 ssu_m(:,:) = 0._wp 111 ssv_m(:,:) = 0._wp 112 ssh_m(:,:) = 0._wp 113 e3t_m(:,:) = e3t_0(:,:,1) !clem: necessary at least for sas2D 114 frq_m(:,:) = 1._wp ! - - 115 sshn (:,:) = 0._wp ! - - 116 ENDIF 117 102 118 IF ( nn_ice == 1 ) THEN 103 119 tsn(:,:,1,jp_tem) = sst_m(:,:) … … 108 124 ub (:,:,1) = ssu_m(:,:) 109 125 vb (:,:,1) = ssv_m(:,:) 110 126 111 127 IF(ln_ctl) THEN ! print control 112 128 CALL prt_ctl(tab2d_1=sst_m, clinfo1=' sst_m - : ', mask1=tmask, ovlap=1 ) … … 155 171 TYPE(FLD_N) :: sn_ssh, sn_e3t, sn_frq 156 172 ! 157 NAMELIST/namsbc_sas/ cn_dir, ln_3d_uve, ln_read_frq, sn_tem, sn_sal, sn_usp, sn_vsp, sn_ssh, sn_e3t, sn_frq173 NAMELIST/namsbc_sas/l_sasread, cn_dir, ln_3d_uve, ln_read_frq, sn_tem, sn_sal, sn_usp, sn_vsp, sn_ssh, sn_e3t, sn_frq 158 174 !!---------------------------------------------------------------------- 159 175 … … 176 192 WRITE(numout,*) '~~~~~~~~~~~ ' 177 193 WRITE(numout,*) ' Namelist namsbc_sas' 194 WRITE(numout,*) ' Initialisation using an input file = ',l_sasread 178 195 WRITE(numout,*) ' Are we supplying a 3D u,v and e3 field ln_3d_uve = ', ln_3d_uve 179 196 WRITE(numout,*) ' Are we reading frq (fraction of qsr absorbed in the 1st T level) ln_read_frq = ', ln_read_frq … … 204 221 nn_closea = 0 205 222 ENDIF 223 IF (l_sasread) THEN 206 224 ! 207 225 !! following code is a bit messy, but distinguishes between when u,v are 3d arrays and … … 285 303 IF( nfld_2d > 0 ) DEALLOCATE( slf_2d, STAT=ierr ) 286 304 305 ENDIF 306 287 307 CALL sbc_ssm( nit000 ) ! need to define ss?_m arrays used in limistate 288 308 IF( .NOT. ln_read_frq ) frq_m(:,:) = 1.
Note: See TracChangeset
for help on using the changeset viewer.