CCC $Header$ CCC TOP 1.0 , LOCEAN-IPSL (2005) C This software is governed by CeCILL licence see modipsl/doc/NEMO_CeCILL.txt C --------------------------------------------------------------------------- SUBROUTINE trcrst CCC--------------------------------------------------------------------- C CCC CCC ROUTINE trcrst CCC ****************** CCC CCC PURPOSE : CCC --------- CCC READ files for restart for passive tracer CCC CC METHOD : CC ------- CC READ the previous fields on the FILE nutrst CC the first record indicates previous characterics CC after control with the present run, we READ : CC - prognostic variables on the second and more record CC CC INPUT : no CC ----- CC COMMON CC /citrst/ : restart PARAMETER CC /comctl/ : parameters for the control CC CC OUTPUT : CC ------ CC argument : no CC COMMON CC /cottrc/ : passive tracers fields now CC and before CC CC WORKSPACE : no CC --------- CC ji,jj,jk,jl CC ino0,it0,ipcg0,isor0,itke0,ino1,it1,isor1,ipcg1,itke1,idast1 CC iarak0,iarak1 CC CC MODIFICATIONS: CC -------------- CC original : 96-11 CC additions : 00-05 (A. Estublier) TVD Limiter Scheme CC key_trc_tvd CC 00-12 (O. Aumont, E. Kestenare) read restart file CC for sediments CC 01-05 (O. Aumont, E. Kestenare) read restart file CC for calcite and silicate sediments CC---------------------------------------------------------------------- CC parameters and commons CC ====================== CDIR$ NOLIST #if defined key_mpp c no ioipsl #include "trcrst.mpp.h" # else CDIR$ NOLIST USE ioipsl USE oce_trc USE trc USE sms USE trctrp_lec IMPLICIT NONE CDIR$ LIST #if defined key_passivetrc CC---------------------------------------------------------------------- CC local declarations CC ================== INTEGER ino0,ino1,it0,it1,jn,iarak0,iarak1 INTEGER ji, jj, jk INTEGER itime, ibvar REAL zdate0, zinfo(3) CHARACTER*32 clname,clname1,clname2 LOGICAL clog CHARACTER*8 clvnames(30) REAL caralk,bicarb C C C 0. initialisations C ------------------ C ino0 =no it0 =nit000 C IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd ) THEN iarak0 = 1 ELSE iarak0=0 ENDIF C IF(lwp) THEN WRITE(numout,*) ' ' WRITE(numout,*) ' *** trcrst beginning of restart for' WRITE(numout,*) ' passive tracer' WRITE(numout,*) ' the present run :' WRITE(numout,*) ' number job is : ',no WRITE(numout,*) ' with the time nit000 : ',nit000 IF(iarak0.eq.1) then WRITE(numout,*) ' and before fields for Arakawa sheme ' ENDIF WRITE(numout,*) ' ' ENDIF C C 1. READ nutrst C -------------- C C ... first information C clname='restart.trc' itime=0 clog=.false. CALL restini(clname,jpi,jpj,glamt,gphit,jpk,gdept,clname $ ,itime,zdate0,rdt,nutrst) C CALL ioget_vname(nutrst, ibvar, clvnames) CALL restget(nutrst,'info',1,1,3,0,clog,zinfo) ino1 = nint(zinfo(1)) it1 = nint(zinfo(2)) iarak1 = nint(zinfo(3)) C IF(lwp) THEN WRITE(numout,*) ' ' WRITE(numout,*) ' READ nutrst with ' WRITE(numout,*) ' number job is : ',ino1 WRITE(numout,*) ' with the time it : ',it1 IF(iarak1.eq.1) then WRITE(numout,*) ' and before fields for Arakawa sheme ' ENDIF WRITE(numout,*) ' number of variables : ', ibvar WRITE(numout,*) ' NetCDF variables : ' WRITE(numout,*) ' ',clvnames (:ibvar) WRITE(numout,*) ' ' ENDIF C C 1.2 control of date C IF((it0-it1).ne.1.and.abs(nrsttr).eq.1) THEN IF(lwp) THEN WRITE(numout,*) ' ===>>>> : problem with nit000 for the', $ ' passive tracer restart' WRITE(numout,*) ' ======= ', $ ' ======================' WRITE(numout,*) ' we stop. verify the FILE' WRITE(numout,*) ' or rerun with the value 0 for the' WRITE(numout,*) ' control of time PARAMETER nrstdt' WRITE(numout,*) ' ' ENDIF STOP 'trcrst' ENDIF C C 1.3 Control of the sheme C IF(iarak0.ne.iarak1) THEN IF(lwp) THEN WRITE(numout,*) ' ===>>>> : problem with the', $ ' passive tracer restart file' WRITE(numout,*) ' ======= ', $ ' ===========================' WRITE(numout,*) ' we stop. verify the FILE' WRITE(numout,*) ' before field required IF 1=',iarak0 WRITE(numout,*) ' before field present in file IF 1=', $ iarak1 WRITE(numout,*) ' ' ENDIF STOP 'trcrst' ENDIF C C ... READ prognostic variables and computes diagnostic variable C DO jn=1,jptra clname='TRN'//ctrcnm(jn) CALL restget(nutrst,clname,jpi,jpj,jpk,0,clog,trn(:,:,:,jn)) END DO DO jn=1,jptra clname='TRB'//ctrcnm(jn) CALL restget(nutrst,clname,jpi,jpj,jpk,0,clog,trb(:,:,:,jn)) END DO # if defined key_trc_hamocc3 clname='SED'//ctrcnm(jppoc) clname1='SED'//ctrcnm(jpcal) clname2='SED'//ctrcnm(jpsil) CALL restget(nutrst,clname1,jpi,jpj,1,0,clog,sedcal(:,:)) CALL restget(nutrst,clname2,jpi,jpj,1,0,clog,sedsil(:,:)) CALL restget(nutrst,clname,jpi,jpj,1,0,clog,sedpoc(:,:)) # elif defined key_trc_npzd || defined key_trc_lobster1 clname='SED'//ctrcnm(jpdet) CALL restget(nutrst,clname,jpi,jpj,1,0,clog,sedpoc(:,:)) # elif defined key_trc_pisces C clname='Silicalim' CALL restget(nutrst,clname,jpi,jpj,1,0,clog,xksi) xksimax=xksi C clname='SED'//ctrcnm(jppoc) clname1='SED'//ctrcnm(jpcal) clname2='SED'//ctrcnm(jpsil) CALL restget(nutrst,clname1,jpi,jpj,1,0,clog,sedcal(:,:)) CALL restget(nutrst,clname2,jpi,jpj,1,0,clog,sedsil(:,:)) CALL restget(nutrst,clname,jpi,jpj,1,0,clog,sedpoc(:,:)) # endif #if defined key_trc_hamocc3 || defined key_trc_pisces C C Initialization of chemical variables of the carbon cycle C -------------------------------------------------------- C DO jk = 1,jpk DO jj = 1,jpj DO ji = 1,jpi caralk = trn(ji,jj,jk,jptal)- & borat(ji,jj,jk)/(1.+1.E-8/(rtrn+akb3(ji,jj,jk))) co3(ji,jj,jk)=(caralk-trn(ji,jj,jk,jpdic))*tmask(ji,jj,jk) & +(1.-tmask(ji,jj,jk))*.5e-3 bicarb = (2.*trn(ji,jj,jk,jpdic)-caralk) hi(ji,jj,jk) = (ak23(ji,jj,jk)*bicarb/co3(ji,jj,jk)) & *tmask(ji,jj,jk)+(1.-tmask(ji,jj,jk))*1.e-9 h2co3(ji,jj) = 1.e-5 ENDDO ENDDO ENDDO #endif #else C C no passive tracers C #endif C #endif C RETURN END