MODULE trcsms_idtra !!====================================================================== !! *** MODULE trcsms_idtra *** !! TOP : TRI main model !!====================================================================== !! History : - ! 1999-10 (JC. Dutay) original code !! 1.0 ! 2004-03 (C. Ethe) free form + modularity !! 2.0 ! 2007-12 (C. Ethe, G. Madec) reorganisation !!---------------------------------------------------------------------- #if defined key_idtra !!---------------------------------------------------------------------- !! 'key_idtra' TRI tracers !!---------------------------------------------------------------------- !! trc_sms_idtra : compute and add TRI suface forcing to TRI trends !! trc_idtra_cst : sets constants for TRI surface forcing computation !!---------------------------------------------------------------------- USE oce_trc ! Ocean variables USE par_trc ! TOP parameters USE trc ! TOP variables USE trdtrc_oce USE trdtrc USE iom IMPLICIT NONE PRIVATE PUBLIC trc_sms_idtra ! called in ??? INTEGER , PUBLIC :: nyear_res ! restoring time constant (year) INTEGER , PUBLIC :: numnatm REAL(wp), PUBLIC :: FDEC ! ! coefficients for conversion REAL(wp) :: WTEMP !! * Substitutions # include "top_substitute.h90" !!---------------------------------------------------------------------- !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) !! $Id: trcsms_idtra.F90 1459 2009-05-23 08:53:26Z cetlod $ !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) !!---------------------------------------------------------------------- CONTAINS SUBROUTINE trc_sms_idtra( kt ) !!---------------------------------------------------------------------- !! *** ROUTINE trc_sms_idtra *** !! !! ** Purpose : Compute the surface boundary contition on TRI 11 !! passive tracer associated with air-mer fluxes and add it !! to the general trend of tracers equations. !! !! ** Method : - get the atmospheric partial pressure - given in pico - !! - computation of solubility ( in 1.e-12 mol/l then in 1.e-9 mol/m3) !! - computation of transfert speed ( given in cm/hour ----> cm/s ) !! - the input function is given by : !! speed * ( concentration at equilibrium - concentration at surface ) !! - the input function is in pico-mol/m3/s and the !! TRI concentration in pico-mol/m3 !! !! *** For Idealized Tracers !! - no need for any temporal references, !! nor any atmospheric concentration, nor air -sea fluxes !! - Here we fixe surface concentration to 1.0 Tracer-Unit/m3 !! - Then we add a decay (radioactive-like) to this tracer concentration !! - the Half life deccay is chosen by the user, depending of the experiment. !! !!---------------------------------------------------------------------- INTEGER, INTENT( in ) :: kt ! ocean time-step index !! INTEGER :: ji, jj, jn, jl, jk !!---------------------------------------------------------------------- IF(lwp) WRITE(numout,*) ' - JPALM - verif :' IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~' IF(lwp) WRITE(numout,*) ' - idtra decay factor : ', FDEC ! DO jn = jp_idtra0, jp_idtra1 ! DO jj = 1, jpj ! DO ji = 1, jpi ! Surface concentrarion fixed to 1 (ideal tracer concentration unit) trn(:,:,1,jn) = 1. trb(:,:,1,jn) = 1. ! ! ENDDO ! ENDDO ! !DECAY of OUR IDEALIZED TRACER ! --------------------------------------- DO jk =1,jpk DO jj=1,jpj DO ji =1,jpi ! IF (trn(ji,jj,jk,jn) > 0.0) THEN WTEMP = trn(ji,jj,jk,jn) * (1. - FDEC ) tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) - WTEMP/rdt ! ENDIF ENDDO ENDDO ENDDO ENDDO !! jn loop ! !!!!!! No added diagnostics to save here for idealize tracers... !!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% !! #if defined key_trc_diaadd !! ! Save diagnostics , just for TRI111 !! # if ! defined key_iomput !! trc2d(:,:,jp_idtra0_2d ) = zpp_idtra(:,:) !! # else !! ! WRITE(NUMOUT,*) 'Iomput idtrasurf ' !! CALL iom_put( "TRISURF" , zpp_idtra(:,:) ) !! ! CALL iom_put( "TRISURF" , xphem(:,:) ) !! ! WRITE(NUMOUT,*) 'Iomputage ' !! CALL iom_put( "AGE" , zage(:,:,:) ) !! # endif !! #endif !! !! IF( l_trdtrc ) THEN !! DO jn = jp_idtra0, jp_idtra1 !! zidtradtra(:,:,:) = tra(:,:,:,jn) !! CALL trd_mod_trc( zidtradtra, jn, jptrc_trd_sms, kt ) ! save trends !! END DO !! END IF END SUBROUTINE trc_sms_idtra #else !!---------------------------------------------------------------------- !! Dummy module No TRI tracers !!---------------------------------------------------------------------- CONTAINS SUBROUTINE trc_sms_idtra( kt ) ! Empty routine WRITE(*,*) 'trc_sms_idtra: You should not have seen this print! error?', kt END SUBROUTINE trc_sms_idtra #endif !!====================================================================== END MODULE trcsms_idtra