- Timestamp:
- 2019-12-05T13:18:21+01:00 (4 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/UKMO_MERGE_2019/src/OCE/TRA/traisf.F90
r11970 r12068 35 35 CONTAINS 36 36 37 SUBROUTINE tra_isf ( kt )37 SUBROUTINE tra_isf ( kt, Kmm, pts, Krhs ) 38 38 !!---------------------------------------------------------------------- 39 39 !! *** ROUTINE tra_isf *** … … 41 41 !! ** Purpose : Compute the temperature trend due to the ice shelf melting (qhoce + qhc) 42 42 !! 43 !! ** Action : - update tsafor cav, par and cpl case43 !! ** Action : - update pts(:,:,:,:,Krhs) for cav, par and cpl case 44 44 !!---------------------------------------------------------------------- 45 INTEGER, INTENT(in) :: kt ! ocean time-step index 45 INTEGER , INTENT(in ) :: kt ! ocean time step 46 INTEGER , INTENT(in ) :: Kmm, Krhs ! ocean time level indices 47 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation 46 48 !!---------------------------------------------------------------------- 47 49 ! … … 55 57 ! 56 58 ! cavity case 57 IF ( ln_isfcav_mlt ) CALL tra_isf_mlt(misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav, risf_cav_tsc, risf_cav_tsc_b, tsa)59 IF ( ln_isfcav_mlt ) CALL tra_isf_mlt(misfkt_cav, misfkb_cav, rhisf_tbl_cav, rfrac_tbl_cav, risf_cav_tsc, risf_cav_tsc_b, pts(:,:,:,:,Krhs)) 58 60 ! 59 61 ! parametrisation case 60 IF ( ln_isfpar_mlt ) CALL tra_isf_mlt(misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par, risf_par_tsc, risf_par_tsc_b, tsa)62 IF ( ln_isfpar_mlt ) CALL tra_isf_mlt(misfkt_par, misfkb_par, rhisf_tbl_par, rfrac_tbl_par, risf_par_tsc, risf_par_tsc_b, pts(:,:,:,:,Krhs)) 61 63 ! 62 64 ! ice sheet coupling case 63 65 IF ( ln_isfcpl ) THEN 64 66 ! 65 IF ( kt == nit000 ) CALL tra_isf_cpl( risfcpl_tsc , tsa)66 IF ( kt == nit000+1) CALL tra_isf_cpl( risfcpl_tsc*0.5_wp, tsa)67 IF ( kt == nit000 ) CALL tra_isf_cpl(Kmm, risfcpl_tsc , pts(:,:,:,:,Krhs)) 68 IF ( kt == nit000+1) CALL tra_isf_cpl(Kmm, risfcpl_tsc*0.5_wp, pts(:,:,:,:,Krhs)) 67 69 ! 68 70 ! ensure 0 trend due to unconservation of the ice shelf coupling 69 IF ( ln_isfcpl_cons ) CALL tra_isf_cpl( risfcpl_cons_tsc, tsa)71 IF ( ln_isfcpl_cons ) CALL tra_isf_cpl(Kmm, risfcpl_cons_tsc, pts(:,:,:,:,Krhs)) 70 72 ! 71 73 END IF 72 74 ! 73 75 IF ( ln_isfdebug ) THEN 74 CALL debug('tra_isf: tsa T', tsa(:,:,:,1))75 CALL debug('tra_isf: tsa S', tsa(:,:,:,2))76 CALL debug('tra_isf: pts(:,:,:,:,Krhs) T', pts(:,:,:,1,Krhs)) 77 CALL debug('tra_isf: pts(:,:,:,:,Krhs) S', pts(:,:,:,2,Krhs)) 76 78 END IF 77 79 ! … … 86 88 !! *** Purpose : Compute the temperature trend due to the ice shelf melting (qhoce + qhc) for cav or par case 87 89 !! 88 !! *** Action :: Update tsawith the surface boundary condition trend90 !! *** Action :: Update pts(:,:,:,:,Krhs) with the surface boundary condition trend 89 91 !! 90 92 !!---------------------------------------------------------------------- … … 103 105 ztc(:,:) = 0.5_wp * ( ptsc(:,:,jp_tem) + ptsc_b(:,:,jp_tem) ) / phtbl(:,:) 104 106 ! 105 ! update tsa107 ! update pts(:,:,:,:,Krhs) 106 108 DO jj = 1,jpj 107 109 DO ji = 1,jpi … … 123 125 END SUBROUTINE tra_isf_mlt 124 126 ! 125 SUBROUTINE tra_isf_cpl( ptsc, ptsa )127 SUBROUTINE tra_isf_cpl( Kmm, ptsc, ptsa ) 126 128 !!---------------------------------------------------------------------- 127 129 !! *** ROUTINE tra_isf_cpl *** 128 130 !! 129 !! *** Action :: Update tsawith the ice shelf coupling trend131 !! *** Action :: Update pts(:,:,:,:,Krhs) with the ice shelf coupling trend 130 132 !! 131 133 !!---------------------------------------------------------------------- 132 134 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(inout) :: ptsa 133 135 !!---------------------------------------------------------------------- 136 INTEGER , INTENT(in ) :: Kmm ! ocean time level index 134 137 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts), INTENT(in ) :: ptsc 135 138 !!---------------------------------------------------------------------- … … 138 141 ! 139 142 DO jk = 1,jpk 140 ptsa(:,:,jk,jp_tem) = ptsa(:,:,jk,jp_tem) + ptsc(:,:,jk,jp_tem) * r1_e1e2t(:,:) / e3t _n(:,:,jk)141 ptsa(:,:,jk,jp_sal) = ptsa(:,:,jk,jp_sal) + ptsc(:,:,jk,jp_sal) * r1_e1e2t(:,:) / e3t _n(:,:,jk)143 ptsa(:,:,jk,jp_tem) = ptsa(:,:,jk,jp_tem) + ptsc(:,:,jk,jp_tem) * r1_e1e2t(:,:) / e3t(:,:,jk,Kmm) 144 ptsa(:,:,jk,jp_sal) = ptsa(:,:,jk,jp_sal) + ptsc(:,:,jk,jp_sal) * r1_e1e2t(:,:) / e3t(:,:,jk,Kmm) 142 145 END DO 143 146 !
Note: See TracChangeset
for help on using the changeset viewer.