- Timestamp:
- 2015-01-20T15:26:13+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
r4292 r5038 14 14 USE oce ! ocean dynamics and tracers 15 15 USE dom_oce ! ocean space and time domain 16 USE sbc_oce ! Surface boundary condition: ocean fields17 16 USE sbc_oce ! surface boundary condition: ocean fields 18 17 USE sbcapr ! surface boundary condition: atmospheric pressure 19 USE prtctl ! Print control (prt_ctl routine)20 USE iom18 USE eosbn2 ! equation of state and related derivatives 19 ! 21 20 USE in_out_manager ! I/O manager 21 USE prtctl ! Print control 22 USE iom ! IOM library 22 23 23 24 IMPLICIT NONE … … 54 55 INTEGER, INTENT(in) :: kt ! ocean time step 55 56 ! 57 INTEGER :: ji, jj ! loop index 56 58 REAL(wp) :: zcoef, zf_sbc ! local scalar 59 REAL(wp), DIMENSION(jpi,jpj,jpts) :: zts 60 REAL(wp), DIMENSION(jpi,jpj) :: zub, zvb,zdep 57 61 !!--------------------------------------------------------------------- 62 63 ! !* first wet T-, U-, V- ocean level (ISF) variables (T, S, depth, velocity) 64 DO jj = 1, jpj 65 DO ji = 1, jpi 66 zub(ji,jj) = ub (ji,jj,miku(ji,jj)) 67 zvb(ji,jj) = vb (ji,jj,mikv(ji,jj)) 68 zts(ji,jj,jp_tem) = tsn(ji,jj,mikt(ji,jj),jp_tem) 69 zts(ji,jj,jp_sal) = tsn(ji,jj,mikt(ji,jj),jp_sal) 70 END DO 71 END DO 72 ! 73 IF( lk_vvl ) THEN 74 DO jj = 1, jpj 75 DO ji = 1, jpi 76 zdep(ji,jj) = fse3t_n(ji,jj,mikt(ji,jj)) 77 END DO 78 END DO 79 ENDIF 58 80 ! ! ---------------------------------------- ! 59 81 IF( nn_fsbc == 1 ) THEN ! Instantaneous surface fields ! 60 82 ! ! ---------------------------------------- ! 61 ssu_m(:,:) = ub(:,:,1) 62 ssv_m(:,:) = vb(:,:,1) 63 sst_m(:,:) = tsn(:,:,1,jp_tem) 64 sss_m(:,:) = tsn(:,:,1,jp_sal) 83 ssu_m(:,:) = zub(:,:) 84 ssv_m(:,:) = zvb(:,:) 85 IF( ln_useCT ) THEN ; sst_m(:,:) = eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 86 ELSE ; sst_m(:,:) = zts(:,:,jp_tem) 87 ENDIF 88 sss_m(:,:) = zts(:,:,jp_sal) 65 89 ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 66 90 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) … … 68 92 ENDIF 69 93 ! 70 IF( lk_vvl ) fse3t_m(:,:) = fse3t_n(:,:,1)94 IF( lk_vvl ) fse3t_m(:,:) = zdep(:,:) 71 95 ! 72 96 ELSE … … 77 101 IF(lwp) WRITE(numout,*) '~~~~~~~ mean fields initialised to instantaneous values' 78 102 zcoef = REAL( nn_fsbc - 1, wp ) 79 ssu_m(:,:) = zcoef * ub(:,:,1) 80 ssv_m(:,:) = zcoef * vb(:,:,1) 81 sst_m(:,:) = zcoef * tsn(:,:,1,jp_tem) 82 sss_m(:,:) = zcoef * tsn(:,:,1,jp_sal) 83 ! ! removed inverse barometer ssh when Patm forcing is used 103 ssu_m(:,:) = zcoef * zub(:,:) 104 ssv_m(:,:) = zcoef * zvb(:,:) 105 IF( ln_useCT ) THEN ; sst_m(:,:) = zcoef * eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 106 ELSE ; sst_m(:,:) = zcoef * zts(:,:,jp_tem) 107 ENDIF 108 sss_m(:,:) = zcoef * zts(:,:,jp_sal) 109 ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 84 110 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 85 ELSE ; ssh_m(:,:) = zcoef * 111 ELSE ; ssh_m(:,:) = zcoef * sshn(:,:) 86 112 ENDIF 87 IF( lk_vvl ) fse3t_m(:,:) = zcoef * fse3t_n(:,:,1) 113 ! 114 IF( lk_vvl ) fse3t_m(:,:) = zcoef * zdep(:,:) 88 115 ! ! ---------------------------------------- ! 89 116 ELSEIF( MOD( kt - 2 , nn_fsbc ) == 0 ) THEN ! Initialisation: New mean computation ! … … 99 126 ! ! Cumulate at each time step ! 100 127 ! ! ---------------------------------------- ! 101 ssu_m(:,:) = ssu_m(:,:) + ub(:,:,1) 102 ssv_m(:,:) = ssv_m(:,:) + vb(:,:,1) 103 sst_m(:,:) = sst_m(:,:) + tsn(:,:,1,jp_tem) 104 sss_m(:,:) = sss_m(:,:) + tsn(:,:,1,jp_sal) 128 ssu_m(:,:) = ssu_m(:,:) + zub(:,:) 129 ssv_m(:,:) = ssv_m(:,:) + zvb(:,:) 130 IF( ln_useCT ) THEN ; sst_m(:,:) = sst_m(:,:) + eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 131 ELSE ; sst_m(:,:) = sst_m(:,:) + zts(:,:,jp_tem) 132 ENDIF 133 sss_m(:,:) = sss_m(:,:) + zts(:,:,jp_sal) 105 134 ! ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 106 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 * 135 IF( ln_apr_dyn ) THEN ; ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 107 136 ELSE ; ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) 108 137 ENDIF 109 IF( lk_vvl ) fse3t_m(:,:) = fse3t_m(:,:) + fse3t_n(:,:,1) 138 ! 139 IF( lk_vvl ) fse3t_m(:,:) = fse3t_m(:,:) + zdep(:,:) 110 140 111 141 ! ! ---------------------------------------- !
Note: See TracChangeset
for help on using the changeset viewer.