- Timestamp:
- 2015-03-27T15:29:08+01:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
r4990 r5184 21 21 USE trd_oce 22 22 USE trdtra 23 USE sbc_oce 24 USE dom_oce 23 25 24 26 IMPLICIT NONE … … 60 62 INTEGER, INTENT( in ) :: kt ! ocean time-step index 61 63 ! 62 INTEGER :: ji, jj, jn ! dummy loop indices 63 REAL(wp) :: zsrau, zse3t ! temporary scalars 64 INTEGER :: ji, jj, jn ! dummy loop indices 65 REAL(wp) :: zsrau, zse3t ! temporary scalars 66 REAL(wp) :: zswitch, zftra, zcd, zdtra, ztfx, ztra, zeuler ! temporary scalars 64 67 CHARACTER (len=22) :: charout 65 68 REAL(wp), POINTER, DIMENSION(:,: ) :: zsfx 66 69 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrtrd 70 67 71 !!--------------------------------------------------------------------- 68 72 ! … … 72 76 CALL wrk_alloc( jpi, jpj, zsfx ) 73 77 IF( l_trdtrc ) CALL wrk_alloc( jpi, jpj, jpk, ztrtrd ) 78 79 SELECT CASE( nn_ice_embd ) ! levitating or embedded sea-ice option 80 CASE( 0 ) ; zswitch = 1 ! (0) standard levitating sea-ice : salt exchange only 81 CASE( 1, 2 ) ; zswitch = 0 ! (1) levitating sea-ice: salt and volume exchange but no pressure effect 82 ! (2) embedded sea-ice : salt and volume fluxes and pressure 83 END SELECT 74 84 75 85 IF( kt == nittrc000 ) THEN … … 91 101 ! 0. initialization 92 102 zsrau = 1. / rau0 103 104 zeuler = 1. ; IF ( neuler .EQ. 0 ) zeuler = 0. 105 93 106 DO jn = 1, jptra 94 107 ! 95 108 IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn) ! save trends 96 109 ! ! add the trend to the general tracer trend 97 DO jj = 2, jpj 98 DO ji = fs_2, fs_jpim1 ! vector opt. 99 zse3t = 1. / fse3t(ji,jj,1) 100 tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) * zsrau * trn(ji,jj,1,jn) * zse3t 110 111 IF ( nn_ice_tr == -1 ) THEN ! identical concentrations in ice and ocean (old code) 112 113 DO jj = 2, jpj 114 DO ji = fs_2, fs_jpim1 ! vector opt. 115 zse3t = 1. / fse3t(ji,jj,1) 116 tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) * zsrau * trn(ji,jj,1,jn) * zse3t 117 END DO 101 118 END DO 102 END DO 119 120 ELSE 121 122 DO jj = 2, jpj 123 DO ji = fs_2, fs_jpim1 ! vector opt. 124 125 zse3t = 1. / fse3t(ji,jj,1) 126 127 ! tracer flux at the ice/ocean interface (tracer/m2/s) 128 zftra = - trc_i(ji,jj,jn) * fmmflx(ji,jj) ! uptake of tracer in the sea ice 129 zcd = trc_o(ji,jj,jn) * fmmflx(ji,jj) ! concentration dilution due to freezing-melting, 130 ! only used in the levitating sea ice case 131 ! tracer flux only : add concentration dilution term in net tracer flux, no F-M in volume flux 132 ! tracer and mass fluxes : no concentration dilution term in net tracer flux, F-M term in volume flux 133 ztfx = zftra + zswitch * zcd ! net tracer flux (+C/D if no ice/ocean mass exchange) 134 135 ! tracer change (left member: euler; right member:leapfrog) 136 ztra = ( 1. - zeuler ) * trn(ji,jj,1,jn) + zeuler * trb(ji,jj,1,jn) 137 138 ! MAX is there to avoid integral ocean uptake in the case of freezing (for iron) 139 zdtra = MAX ( - ztra / r2dtra(1) , zsrau * ( ztfx + zsfx(ji,jj) * trn(ji,jj,1,jn) ) * zse3t ) ! tracer tendency 140 ! r2dtra is time step 141 tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zdtra ! new line 142 143 ! IF ( ztfx .NE. 0.0 ) THEN 144 ! WRITE(numout,*) ji, jj, jn 145 ! WRITE(numout,*) ' trc_o : ', trc_o(ji,jj,jn) 146 ! WRITE(numout,*) ' trc_i : ', trc_i(ji,jj,jn) 147 ! WRITE(numout,*) ' fmmflx : ', fmmflx(ji,jj) 148 ! WRITE(numout,*) ' zswitch: ', zswitch 149 ! WRITE(numout,*) ' zcd : ', zcd 150 ! WRITE(numout,*) ' zftra : ', zftra 151 ! WRITE(numout,*) ' ztfx : ', ztfx 152 ! WRITE(numout,*) ' zsrau : ', zsrau 153 ! WRITE(numout,*) ' zsfx : ', zsfx(ji,jj) 154 ! WRITE(numout,*) ' zse3t : ', zse3t 155 ! WRITE(numout,*) ' ztra : ', ztra 156 ! WRITE(numout,*) ' zdtra : ', zdtra 157 ! WRITE(numout,*) ' Old tendency : ', zsfx(ji,jj) * zsrau * trn(ji,jj,1,jn) * zse3t 158 ! ENDIF 159 160 END DO 161 END DO 162 163 ENDIF 103 164 104 165 IF( l_trdtrc ) THEN
Note: See TracChangeset
for help on using the changeset viewer.