Changeset 7920


Ignore:
Timestamp:
2017-04-18T12:49:13+02:00 (3 years ago)
Author:
marc
Message:

Removing the finalisation of diagnostics from trcbio_medusa.F90 into bio_medusa_fin.F90

Location:
branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_medusa_chg_trc_bio_medusa/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90

    r7912 r7920  
    9393 
    9494      !! JPALM (27-06-2016): add lk_oasis for CO2 and DMS coupling with atm 
    95       USE sbc_oce, ONLY: lk_oasis 
    96       USE oce,     ONLY: CO2Flux_out_cpl, DMS_out_cpl, PCO2a_in_cpl 
     95      USE sbc_oce,                ONLY: lk_oasis 
     96      USE oce,                    ONLY: CO2Flux_out_cpl, DMS_out_cpl,       & 
     97                                        PCO2a_in_cpl 
    9798      USE bio_medusa_mod 
    98       USE bio_medusa_init_mod, ONLY: bio_medusa_init 
     99      USE bio_medusa_init_mod,    ONLY: bio_medusa_init 
     100      USE bio_medusa_fin_mod,     ONLY: bio_medusa_fin 
    99101 
    100102      IMPLICIT NONE 
     
    42694271 
    42704272      !!---------------------------------------------------------------------- 
    4271       !! Process benthic in/out fluxes 
    4272       !! These can be handled outside of the 3D calculations since the 
    4273       !! benthic pools (and fluxes) are 2D in nature; this code is 
    4274       !! (shamelessly) borrowed from corresponding code in the LOBSTER 
    4275       !! model 
     4273      !! Final calculations for diagnostics 
    42764274      !!---------------------------------------------------------------------- 
    4277       !! 
    4278       !! IF(lwp) WRITE(numout,*) 'AXY: rdt = ', rdt 
    4279       if (jorgben.eq.1) then 
    4280          za_sed_n(:,:)  = zn_sed_n(:,:)  + &  
    4281          &                ( f_sbenin_n(:,:)  + f_fbenin_n(:,:)  - f_benout_n(:,:)  ) * (rdt / 86400.) 
    4282          zn_sed_n(:,:)  = za_sed_n(:,:) 
    4283          !! 
    4284          za_sed_fe(:,:) = zn_sed_fe(:,:) + & 
    4285          &                ( f_sbenin_fe(:,:) + f_fbenin_fe(:,:) - f_benout_fe(:,:) ) * (rdt / 86400.) 
    4286          zn_sed_fe(:,:) = za_sed_fe(:,:) 
    4287          !! 
    4288          za_sed_c(:,:)  = zn_sed_c(:,:)  + & 
    4289          &                ( f_sbenin_c(:,:)  + f_fbenin_c(:,:)  - f_benout_c(:,:)  ) * (rdt / 86400.) 
    4290          zn_sed_c(:,:)  = za_sed_c(:,:) 
    4291       endif 
    4292       if (jinorgben.eq.1) then 
    4293          za_sed_si(:,:) = zn_sed_si(:,:) + &  
    4294          &                ( f_fbenin_si(:,:) - f_benout_si(:,:) ) * (rdt / 86400.) 
    4295          zn_sed_si(:,:) = za_sed_si(:,:) 
    4296          !! 
    4297          za_sed_ca(:,:) = zn_sed_ca(:,:) + & 
    4298          &                ( f_fbenin_ca(:,:) - f_benout_ca(:,:) ) * (rdt / 86400.) 
    4299          zn_sed_ca(:,:) = za_sed_ca(:,:) 
    4300       endif 
    4301       IF( ln_diatrc ) THEN 
    4302          DO jj = 2,jpjm1 
    4303             DO ji = 2,jpim1 
    4304                trc2d(ji,jj,131) = za_sed_n(ji,jj) 
    4305                trc2d(ji,jj,132) = za_sed_fe(ji,jj) 
    4306                trc2d(ji,jj,133) = za_sed_c(ji,jj) 
    4307                trc2d(ji,jj,134) = za_sed_si(ji,jj) 
    4308                trc2d(ji,jj,135) = za_sed_ca(ji,jj) 
    4309             ENDDO 
    4310          ENDDO 
    4311          !! AXY (07/07/15): temporary hijacking 
    4312 # if defined key_roam 
    4313   !!       trc2d(:,:,126) = zn_dms_chn(:,:) 
    4314   !!       trc2d(:,:,127) = zn_dms_chd(:,:) 
    4315   !!       trc2d(:,:,128) = zn_dms_mld(:,:) 
    4316   !!       trc2d(:,:,129) = zn_dms_qsr(:,:) 
    4317   !!       trc2d(:,:,130) = zn_dms_din(:,:) 
    4318 # endif 
    4319       ENDIF  
    4320       !! 
    4321       if (ibenthic.eq.2) then 
    4322          !! The code below (in this if ... then ... endif loop) is 
    4323          !! effectively commented out because it does not work as  
    4324          !! anticipated; it can be deleted at a later date 
    4325          if (jorgben.eq.1) then 
    4326             za_sed_n(:,:)  = ( f_sbenin_n(:,:)  + f_fbenin_n(:,:)  - f_benout_n(:,:)  ) * rdt 
    4327             za_sed_fe(:,:) = ( f_sbenin_fe(:,:) + f_fbenin_fe(:,:) - f_benout_fe(:,:) ) * rdt 
    4328             za_sed_c(:,:)  = ( f_sbenin_c(:,:)  + f_fbenin_c(:,:)  - f_benout_c(:,:)  ) * rdt 
    4329          endif 
    4330          if (jinorgben.eq.1) then 
    4331             za_sed_si(:,:) = ( f_fbenin_si(:,:) - f_benout_si(:,:) ) * rdt 
    4332             za_sed_ca(:,:) = ( f_fbenin_ca(:,:) - f_benout_ca(:,:) ) * rdt 
    4333          endif 
    4334          !! 
    4335          !! Leap-frog scheme - only in explicit case, otherwise the time stepping 
    4336          !! is already being done in trczdf 
    4337          !! IF( l_trczdf_exp .AND. (ln_trcadv_cen2 .OR. ln_trcadv_tvd) ) THEN 
    4338          !!    zfact = 2. * rdttra(jk) * FLOAT( ndttrc ) 
    4339          !!    IF( neuler == 0 .AND. kt == nittrc000 )   zfact = rdttra(jk) * FLOAT(ndttrc) 
    4340          !!    if (jorgben.eq.1) then 
    4341          !!       za_sed_n(:,:)  = zb_sed_n(:,:)  + ( zfact * za_sed_n(:,:)  ) 
    4342          !!      za_sed_fe(:,:) = zb_sed_fe(:,:) + ( zfact * za_sed_fe(:,:) ) 
    4343          !!       za_sed_c(:,:)  = zb_sed_c(:,:)  + ( zfact * za_sed_c(:,:)  ) 
    4344          !!    endif 
    4345          !!    if (jinorgben.eq.1) then 
    4346          !!       za_sed_si(:,:) = zb_sed_si(:,:) + ( zfact * za_sed_si(:,:) ) 
    4347          !!       za_sed_ca(:,:) = zb_sed_ca(:,:) + ( zfact * za_sed_ca(:,:) ) 
    4348          !!    endif 
    4349          !! ENDIF 
    4350          !!  
    4351          !! Time filter and swap of arrays 
    4352          IF( ln_trcadv_cen2 .OR. ln_trcadv_tvd  ) THEN ! centred or tvd scheme 
    4353             IF( neuler == 0 .AND. kt == nittrc000 ) THEN 
    4354                if (jorgben.eq.1) then 
    4355                   zb_sed_n(:,:)  = zn_sed_n(:,:) 
    4356                   zn_sed_n(:,:)  = za_sed_n(:,:) 
    4357                   za_sed_n(:,:)  = 0.0 
    4358                   !! 
    4359                   zb_sed_fe(:,:) = zn_sed_fe(:,:) 
    4360                   zn_sed_fe(:,:) = za_sed_fe(:,:) 
    4361                   za_sed_fe(:,:) = 0.0 
    4362                   !! 
    4363                   zb_sed_c(:,:)  = zn_sed_c(:,:) 
    4364                   zn_sed_c(:,:)  = za_sed_c(:,:) 
    4365                   za_sed_c(:,:)  = 0.0 
    4366                endif 
    4367                if (jinorgben.eq.1) then 
    4368                   zb_sed_si(:,:) = zn_sed_si(:,:) 
    4369                   zn_sed_si(:,:) = za_sed_si(:,:) 
    4370                   za_sed_si(:,:) = 0.0 
    4371                   !! 
    4372                   zb_sed_ca(:,:) = zn_sed_ca(:,:) 
    4373                   zn_sed_ca(:,:) = za_sed_ca(:,:) 
    4374                   za_sed_ca(:,:) = 0.0 
    4375                endif 
    4376             ELSE 
    4377                if (jorgben.eq.1) then 
    4378                   zb_sed_n(:,:)  = (atfp  * ( zb_sed_n(:,:)  + za_sed_n(:,:)  )) + (atfp1 * zn_sed_n(:,:) ) 
    4379                   zn_sed_n(:,:)  = za_sed_n(:,:) 
    4380                   za_sed_n(:,:)  = 0.0 
    4381                   !! 
    4382                   zb_sed_fe(:,:) = (atfp  * ( zb_sed_fe(:,:) + za_sed_fe(:,:) )) + (atfp1 * zn_sed_fe(:,:)) 
    4383                   zn_sed_fe(:,:) = za_sed_fe(:,:) 
    4384                   za_sed_fe(:,:) = 0.0 
    4385                   !! 
    4386                   zb_sed_c(:,:)  = (atfp  * ( zb_sed_c(:,:)  + za_sed_c(:,:)  )) + (atfp1 * zn_sed_c(:,:) ) 
    4387                   zn_sed_c(:,:)  = za_sed_c(:,:) 
    4388                   za_sed_c(:,:)  = 0.0 
    4389                endif 
    4390                if (jinorgben.eq.1) then 
    4391                   zb_sed_si(:,:) = (atfp  * ( zb_sed_si(:,:) + za_sed_si(:,:) )) + (atfp1 * zn_sed_si(:,:)) 
    4392                   zn_sed_si(:,:) = za_sed_si(:,:) 
    4393                   za_sed_si(:,:) = 0.0 
    4394                   !! 
    4395                   zb_sed_ca(:,:) = (atfp  * ( zb_sed_ca(:,:) + za_sed_ca(:,:) )) + (atfp1 * zn_sed_ca(:,:)) 
    4396                   zn_sed_ca(:,:) = za_sed_ca(:,:) 
    4397                   za_sed_ca(:,:) = 0.0 
    4398                endif 
    4399             ENDIF 
    4400          ELSE                   !  case of smolar scheme or muscl 
    4401             if (jorgben.eq.1) then 
    4402                zb_sed_n(:,:)  = za_sed_n(:,:) 
    4403                zn_sed_n(:,:)  = za_sed_n(:,:) 
    4404                za_sed_n(:,:)  = 0.0 
    4405                !! 
    4406                zb_sed_fe(:,:) = za_sed_fe(:,:) 
    4407                zn_sed_fe(:,:) = za_sed_fe(:,:) 
    4408                za_sed_fe(:,:) = 0.0 
    4409                !! 
    4410                zb_sed_c(:,:)  = za_sed_c(:,:) 
    4411                zn_sed_c(:,:)  = za_sed_c(:,:) 
    4412                za_sed_c(:,:)  = 0.0 
    4413             endif 
    4414             if (jinorgben.eq.1) then 
    4415                zb_sed_si(:,:) = za_sed_si(:,:) 
    4416                zn_sed_si(:,:) = za_sed_si(:,:) 
    4417                za_sed_si(:,:) = 0.0 
    4418                !! 
    4419                zb_sed_ca(:,:) = za_sed_ca(:,:) 
    4420                zn_sed_ca(:,:) = za_sed_ca(:,:) 
    4421                za_sed_ca(:,:) = 0.0 
    4422             endif 
    4423          ENDIF 
    4424       endif 
    4425        
    4426       IF( ln_diatrc ) THEN 
    4427          !!---------------------------------------------------------------------- 
    4428          !! Output several accumulated diagnostics 
    4429          !!   - biomass-average phytoplankton limitation terms 
    4430          !!   - integrated tendency terms 
    4431          !!---------------------------------------------------------------------- 
    4432          !!  
    4433          DO jj = 2,jpjm1 
    4434             DO ji = 2,jpim1 
    4435                !! non-diatom phytoplankton limitations 
    4436                trc2d(ji,jj,25)  = trc2d(ji,jj,25) / MAX(ftot_pn(ji,jj), rsmall) 
    4437                trc2d(ji,jj,26)  = trc2d(ji,jj,26) / MAX(ftot_pn(ji,jj), rsmall) 
    4438                trc2d(ji,jj,27)  = trc2d(ji,jj,27) / MAX(ftot_pn(ji,jj), rsmall) 
    4439                !! diatom phytoplankton limitations 
    4440                trc2d(ji,jj,28)  = trc2d(ji,jj,28) / MAX(ftot_pd(ji,jj), rsmall) 
    4441                trc2d(ji,jj,29)  = trc2d(ji,jj,29) / MAX(ftot_pd(ji,jj), rsmall) 
    4442                trc2d(ji,jj,30)  = trc2d(ji,jj,30) / MAX(ftot_pd(ji,jj), rsmall) 
    4443                trc2d(ji,jj,31)  = trc2d(ji,jj,31) / MAX(ftot_pd(ji,jj), rsmall) 
    4444                trc2d(ji,jj,32)  = trc2d(ji,jj,32) / MAX(ftot_pd(ji,jj), rsmall) 
    4445                !! tendency terms 
    4446                trc2d(ji,jj,76)  = fflx_n(ji,jj) 
    4447                trc2d(ji,jj,77)  = fflx_si(ji,jj) 
    4448                trc2d(ji,jj,78)  = fflx_fe(ji,jj) 
    4449                !! integrated biomass 
    4450                trc2d(ji,jj,79)  = ftot_pn(ji,jj)       !! integrated non-diatom phytoplankton 
    4451                trc2d(ji,jj,80)  = ftot_pd(ji,jj)       !! integrated diatom phytoplankton 
    4452                trc2d(ji,jj,217) = ftot_zmi(ji,jj)      !! Integrated microzooplankton 
    4453                trc2d(ji,jj,218) = ftot_zme(ji,jj)      !! Integrated mesozooplankton 
    4454                trc2d(ji,jj,219) = ftot_det(ji,jj)      !! Integrated slow detritus, nitrogen 
    4455                trc2d(ji,jj,220) = ftot_dtc(ji,jj)      !! Integrated slow detritus, carbon 
    4456 # if defined key_roam 
    4457                !! the balance of nitrogen production/consumption 
    4458                trc2d(ji,jj,111) = fnit_prod(ji,jj)  !! integrated nitrogen production 
    4459                trc2d(ji,jj,112) = fnit_cons(ji,jj)  !! integrated nitrogen consumption 
    4460                !! the balance of carbon production/consumption 
    4461                trc2d(ji,jj,113) = fcar_prod(ji,jj)  !! integrated carbon production 
    4462                trc2d(ji,jj,114) = fcar_cons(ji,jj)  !! integrated carbon consumption 
    4463                !! the balance of oxygen production/consumption 
    4464                trc2d(ji,jj,115) = foxy_prod(ji,jj)  !! integrated oxygen production 
    4465                trc2d(ji,jj,116) = foxy_cons(ji,jj)  !! integrated oxygen consumption 
    4466                trc2d(ji,jj,117) = foxy_anox(ji,jj)  !! integrated unrealised oxygen consumption 
    4467 # endif 
    4468             ENDDO 
    4469          ENDDO 
    4470           
    4471 # if defined key_roam 
    4472 #  if defined key_axy_nancheck 
    4473          !!---------------------------------------------------------------------- 
    4474          !! Check for NaNs in diagnostic outputs 
    4475          !!---------------------------------------------------------------------- 
    4476          !!  
    4477          !! 2D diagnostics 
    4478          DO jn = 1,150 
    4479             fq0 = SUM(trc2d(:,:,jn)) 
    4480             !! AXY (30/01/14): "isnan" problem on HECTOR 
    4481             !! if (fq0 /= fq0 ) then 
    4482             if ( ieee_is_nan( fq0 ) ) then 
    4483                !! there's a NaN here 
    4484                if (lwp) write(numout,*) 'NAN detected in 2D diagnostic field', jn, 'at time', kt, 'at position:' 
    4485                DO jj = 1,jpj 
    4486                   DO ji = 1,jpi 
    4487                      if ( ieee_is_nan( trc2d(ji,jj,jn) ) ) then 
    4488                         if (lwp) write (numout,'(a,3i6)') 'NAN-CHECK', & 
    4489                         &        ji, jj, jn 
    4490                      endif 
    4491                   ENDDO 
    4492                ENDDO 
    4493           CALL ctl_stop( 'trcbio_medusa, NAN in 2D diagnostic field' ) 
    4494             endif 
    4495          ENDDO 
    4496          !! 
    4497          !! 3D diagnostics 
    4498          DO jn = 1,5 
    4499             fq0 = SUM(trc3d(:,:,:,jn)) 
    4500             !! AXY (30/01/14): "isnan" problem on HECTOR 
    4501             !! if (fq0 /= fq0 ) then 
    4502             if ( ieee_is_nan( fq0 ) ) then 
    4503                !! there's a NaN here 
    4504                if (lwp) write(numout,*) 'NAN detected in 3D diagnostic field', jn, 'at time', kt, 'at position:' 
    4505                DO jk = 1,jpk 
    4506                   DO jj = 1,jpj 
    4507                      DO ji = 1,jpi 
    4508                         if ( ieee_is_nan( trc3d(ji,jj,jk,jn) ) ) then 
    4509                            if (lwp) write (numout,'(a,4i6)') 'NAN-CHECK', & 
    4510                            &        ji, jj, jk, jn 
    4511                         endif 
    4512                      ENDDO 
    4513                   ENDDO 
    4514                ENDDO 
    4515           CALL ctl_stop( 'trcbio_medusa, NAN in 3D diagnostic field' ) 
    4516             endif 
    4517          ENDDO 
    4518     CALL flush(numout) 
    4519 #  endif 
    4520 # endif 
    4521  
    4522          !!---------------------------------------------------------------------- 
    4523          !! Don't know what this does; belongs to someone else ... 
    4524          !!---------------------------------------------------------------------- 
    4525          !!  
    4526          !! Lateral boundary conditions on trc2d 
    4527          DO jn=1,jp_medusa_2d 
    4528              CALL lbc_lnk(trc2d(:,:,jn),'T',1. ) 
    4529          ENDDO  
    4530  
    4531          !! Lateral boundary conditions on trc3d 
    4532          DO jn=1,jp_medusa_3d 
    4533              CALL lbc_lnk(trc3d(:,:,1,jn),'T',1. ) 
    4534          ENDDO  
    4535  
    4536  
    4537 # if defined key_axy_nodiag 
    4538          !!---------------------------------------------------------------------- 
    4539          !! Blank diagnostics as a NaN-trap 
    4540          !!---------------------------------------------------------------------- 
    4541          !!  
    4542          !! blank 2D diagnostic array 
    4543          trc2d(:,:,:) = 0.e0 
    4544          !! 
    4545          !! blank 3D diagnostic array 
    4546          trc3d(:,:,:,:) = 0.e0 
    4547 # endif 
    4548  
    4549  
    4550          !!---------------------------------------------------------------------- 
    4551          !! Add in XML diagnostics stuff 
    4552          !!---------------------------------------------------------------------- 
    4553          !! 
    4554          !! ** 2D diagnostics 
    4555          DO jn=1,jp_medusa_2d 
    4556             CALL iom_put(TRIM(ctrc2d(jn)), trc2d(:,:,jn)) 
    4557          END DO 
    4558 !! AXY (17/02/14): don't think I need this if I modify the above for all diagnostics 
    4559 !! #  if defined key_roam 
    4560 !!          DO jn=91,jp_medusa_2d 
    4561 !!             CALL iom_put(TRIM(ctrc2d(jn)), trc2d(:,:,jn)) 
    4562 !!          END DO       
    4563 !! #  endif 
    4564          !! 
    4565          !! ** 3D diagnostics 
    4566          DO jn=1,jp_medusa_3d 
    4567             CALL iom_put(TRIM(ctrc3d(jn)), trc3d(:,:,:,jn)) 
    4568          END DO 
    4569 !! AXY (17/02/14): don't think I need this if I modify the above for all diagnostics 
    4570 !! #  if defined key_roam 
    4571 !!          CALL iom_put(TRIM(ctrc3d(5)), trc3d(:,:,:,5)) 
    4572 !! #  endif 
    4573  
    4574  
    4575       ELSE IF( lk_iomput .AND. .NOT. ln_diatrc ) THEN 
    4576          !!!---------------------------------------------------------------------- 
    4577          !! Add very last diag calculations  
    4578          !!!---------------------------------------------------------------------- 
    4579          DO jj = 2,jpjm1 
    4580             DO ji = 2,jpim1 
    4581                !!          
    4582                IF( med_diag%PN_JLIM%dgsave ) THEN 
    4583                   fjln2d(ji,jj) = fjln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall) 
    4584                ENDIF 
    4585                IF( med_diag%PN_NLIM%dgsave ) THEN 
    4586                   fnln2d(ji,jj) = fnln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall) 
    4587                ENDIF 
    4588                IF( med_diag%PN_FELIM%dgsave ) THEN 
    4589                   ffln2d(ji,jj) = ffln2d(ji,jj)   / MAX(ftot_pn(ji,jj), rsmall) 
    4590                ENDIF 
    4591                IF( med_diag%PD_JLIM%dgsave ) THEN 
    4592                   fjld2d(ji,jj) = fjld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
    4593                ENDIF 
    4594                IF( med_diag%PD_NLIM%dgsave ) THEN 
    4595                   fnld2d(ji,jj) = fnld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
    4596                ENDIF 
    4597                IF( med_diag%PD_FELIM%dgsave ) THEN 
    4598                   ffld2d(ji,jj) = ffld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
    4599                ENDIF 
    4600                IF( med_diag%PD_SILIM%dgsave ) THEN 
    4601                   fsld2d2(ji,jj) = fsld2d2(ji,jj) / MAX(ftot_pd(ji,jj), rsmall) 
    4602                ENDIF 
    4603                IF( med_diag%PDSILIM2%dgsave ) THEN 
    4604                   fsld2d(ji,jj) = fsld2d(ji,jj)   / MAX(ftot_pd(ji,jj), rsmall) 
    4605                ENDIF 
    4606             ENDDO 
    4607          ENDDO 
    4608          !!---------------------------------------------------------------------- 
    4609          !! Add in XML diagnostics stuff 
    4610          !!---------------------------------------------------------------------- 
    4611          !! 
    4612          !! ** 2D diagnostics 
    4613 #   if defined key_debug_medusa 
    4614          IF (lwp) write (numout,*) 'trc_bio_medusa: export all diag.' 
    4615          CALL flush(numout) 
    4616 #   endif 
    4617          IF ( med_diag%INVTN%dgsave ) THEN 
    4618             CALL iom_put( "INVTN"  , ftot_n ) 
    4619          ENDIF 
    4620          IF ( med_diag%INVTSI%dgsave ) THEN 
    4621             CALL iom_put( "INVTSI"  , ftot_si ) 
    4622          ENDIF 
    4623          IF ( med_diag%INVTFE%dgsave ) THEN 
    4624             CALL iom_put( "INVTFE"  , ftot_fe ) 
    4625          ENDIF                            
    4626          IF ( med_diag%ML_PRN%dgsave ) THEN 
    4627             CALL iom_put( "ML_PRN"  , fprn_ml ) 
    4628          ENDIF 
    4629          IF ( med_diag%ML_PRD%dgsave ) THEN 
    4630             CALL iom_put( "ML_PRD"  , fprd_ml ) 
    4631          ENDIF 
    4632          IF ( med_diag%OCAL_LVL%dgsave ) THEN 
    4633             CALL iom_put( "OCAL_LVL"  , fccd ) 
    4634          ENDIF 
    4635          IF ( med_diag%PN_JLIM%dgsave ) THEN 
    4636             CALL iom_put( "PN_JLIM"  , fjln2d ) 
    4637             CALL wrk_dealloc( jpi, jpj,   fjln2d   ) 
    4638          ENDIF 
    4639          IF ( med_diag%PN_NLIM%dgsave ) THEN 
    4640             CALL iom_put( "PN_NLIM"  , fnln2d ) 
    4641             CALL wrk_dealloc( jpi, jpj,   fnln2d   ) 
    4642          ENDIF 
    4643          IF ( med_diag%PN_FELIM%dgsave ) THEN 
    4644             CALL iom_put( "PN_FELIM"  , ffln2d ) 
    4645             CALL wrk_dealloc( jpi, jpj,   ffln2d   ) 
    4646          ENDIF 
    4647          IF ( med_diag%PD_JLIM%dgsave ) THEN 
    4648             CALL iom_put( "PD_JLIM"  , fjld2d ) 
    4649             CALL wrk_dealloc( jpi, jpj,  fjld2d    ) 
    4650          ENDIF 
    4651          IF ( med_diag%PD_NLIM%dgsave ) THEN 
    4652             CALL iom_put( "PD_NLIM"  , fnld2d ) 
    4653             CALL wrk_dealloc( jpi, jpj,   fnld2d  ) 
    4654          ENDIF 
    4655          IF ( med_diag%PD_FELIM%dgsave ) THEN 
    4656             CALL iom_put( "PD_FELIM"  , ffld2d ) 
    4657             CALL wrk_dealloc( jpi, jpj,  ffld2d    ) 
    4658          ENDIF 
    4659          IF ( med_diag%PD_SILIM%dgsave ) THEN 
    4660             CALL iom_put( "PD_SILIM"  , fsld2d2 ) 
    4661             CALL wrk_dealloc( jpi, jpj,   fsld2d2   ) 
    4662          ENDIF 
    4663          IF ( med_diag%PDSILIM2%dgsave ) THEN 
    4664             CALL iom_put( "PDSILIM2"  , fsld2d ) 
    4665             CALL wrk_dealloc( jpi, jpj,   fsld2d   ) 
    4666          ENDIF 
    4667          IF ( med_diag%INTFLX_N%dgsave ) THEN 
    4668             CALL iom_put( "INTFLX_N"  , fflx_n ) 
    4669          ENDIF 
    4670          IF ( med_diag%INTFLX_SI%dgsave ) THEN 
    4671             CALL iom_put( "INTFLX_SI"  , fflx_si ) 
    4672          ENDIF 
    4673          IF ( med_diag%INTFLX_FE%dgsave ) THEN 
    4674             CALL iom_put( "INTFLX_FE"  , fflx_fe ) 
    4675          ENDIF         
    4676          IF ( med_diag%INT_PN%dgsave ) THEN 
    4677             CALL iom_put( "INT_PN"  , ftot_pn ) 
    4678          ENDIF 
    4679          IF ( med_diag%INT_PD%dgsave ) THEN 
    4680             CALL iom_put( "INT_PD"  , ftot_pd ) 
    4681          ENDIF          
    4682          IF ( med_diag%INT_ZMI%dgsave ) THEN 
    4683             CALL iom_put( "INT_ZMI"  , ftot_zmi ) 
    4684          ENDIF 
    4685          IF ( med_diag%INT_ZME%dgsave ) THEN 
    4686             CALL iom_put( "INT_ZME"  , ftot_zme ) 
    4687          ENDIF 
    4688          IF ( med_diag%INT_DET%dgsave ) THEN 
    4689             CALL iom_put( "INT_DET"  , ftot_det ) 
    4690          ENDIF 
    4691          IF ( med_diag%INT_DTC%dgsave ) THEN 
    4692             CALL iom_put( "INT_DTC"  , ftot_dtc ) 
    4693          ENDIF 
    4694          IF ( med_diag%BEN_N%dgsave ) THEN 
    4695             CALL iom_put( "BEN_N"  , za_sed_n ) 
    4696          ENDIF 
    4697          IF ( med_diag%BEN_FE%dgsave ) THEN 
    4698             CALL iom_put( "BEN_FE"  , za_sed_fe ) 
    4699          ENDIF 
    4700          IF ( med_diag%BEN_C%dgsave ) THEN 
    4701             CALL iom_put( "BEN_C"  , za_sed_c ) 
    4702          ENDIF 
    4703          IF ( med_diag%BEN_SI%dgsave ) THEN 
    4704             CALL iom_put( "BEN_SI"  , za_sed_si ) 
    4705          ENDIF 
    4706          IF ( med_diag%BEN_CA%dgsave ) THEN 
    4707             CALL iom_put( "BEN_CA"  , za_sed_ca ) 
    4708          ENDIF 
    4709          IF ( med_diag%RUNOFF%dgsave ) THEN 
    4710             CALL iom_put( "RUNOFF"  , f_runoff ) 
    4711          ENDIF  
    4712 # if defined key_roam         
    4713          IF ( med_diag%N_PROD%dgsave ) THEN 
    4714             CALL iom_put( "N_PROD"  , fnit_prod ) 
    4715          ENDIF 
    4716          IF ( med_diag%N_CONS%dgsave ) THEN 
    4717             CALL iom_put( "N_CONS"  , fnit_cons ) 
    4718          ENDIF 
    4719          IF ( med_diag%C_PROD%dgsave ) THEN 
    4720             CALL iom_put( "C_PROD"  , fcar_prod ) 
    4721          ENDIF 
    4722          IF ( med_diag%C_CONS%dgsave ) THEN 
    4723             CALL iom_put( "C_CONS"  , fcar_cons ) 
    4724          ENDIF 
    4725          IF ( med_diag%O2_PROD%dgsave ) THEN 
    4726             CALL iom_put( "O2_PROD"  , foxy_prod ) 
    4727          ENDIF 
    4728          IF ( med_diag%O2_CONS%dgsave ) THEN 
    4729             CALL iom_put( "O2_CONS"  , foxy_cons ) 
    4730          ENDIF 
    4731          IF ( med_diag%O2_ANOX%dgsave ) THEN 
    4732             CALL iom_put( "O2_ANOX"  , foxy_anox ) 
    4733          ENDIF 
    4734          IF ( med_diag%INVTC%dgsave ) THEN 
    4735             CALL iom_put( "INVTC"  , ftot_c ) 
    4736          ENDIF 
    4737          IF ( med_diag%INVTALK%dgsave ) THEN 
    4738             CALL iom_put( "INVTALK"  , ftot_a ) 
    4739          ENDIF 
    4740          IF ( med_diag%INVTO2%dgsave ) THEN 
    4741             CALL iom_put( "INVTO2"  , ftot_o2 ) 
    4742          ENDIF 
    4743          IF ( med_diag%COM_RESP%dgsave ) THEN 
    4744             CALL iom_put( "COM_RESP"  , fcomm_resp ) 
    4745          ENDIF          
    4746 # endif       
    4747          !! 
    4748          !! diagnostic filled in the i-j-k main loop 
    4749          !!-------------------------------------------- 
    4750          IF ( med_diag%PRN%dgsave ) THEN 
    4751             CALL iom_put( "PRN"  , fprn2d ) 
    4752             CALL wrk_dealloc( jpi, jpj,   fprn2d   ) 
    4753          ENDIF 
    4754          IF ( med_diag%MPN%dgsave ) THEN 
    4755             CALL iom_put( "MPN"  ,fdpn2d  ) 
    4756             CALL wrk_dealloc( jpi, jpj,    fdpn2d  ) 
    4757          ENDIF 
    4758          IF ( med_diag%PRD%dgsave ) THEN 
    4759             CALL iom_put( "PRD"  ,fprd2d  ) 
    4760             CALL wrk_dealloc( jpi, jpj,   fprd2d  ) 
    4761          ENDIF 
    4762          IF( med_diag%MPD%dgsave ) THEN 
    4763             CALL iom_put( "MPD"  , fdpd2d ) 
    4764             CALL wrk_dealloc( jpi, jpj,    fdpd2d ) 
    4765          ENDIF 
    4766          !  IF( med_diag%DSED%dgsave ) THEN 
    4767          !      CALL iom_put( "DSED"  , ftot_n ) 
    4768          !  ENDIF 
    4769          IF( med_diag%OPAL%dgsave ) THEN 
    4770             CALL iom_put( "OPAL"  , fprds2d ) 
    4771             CALL wrk_dealloc( jpi, jpj,   fprds2d  ) 
    4772          ENDIF 
    4773          IF( med_diag%OPALDISS%dgsave ) THEN 
    4774             CALL iom_put( "OPALDISS"  , fsdiss2d ) 
    4775             CALL wrk_dealloc( jpi, jpj,   fsdiss2d  ) 
    4776          ENDIF 
    4777          IF( med_diag%GMIPn%dgsave ) THEN 
    4778             CALL iom_put( "GMIPn"  , fgmipn2d ) 
    4779             CALL wrk_dealloc( jpi, jpj,   fgmipn2d  ) 
    4780          ENDIF 
    4781          IF( med_diag%GMID%dgsave ) THEN 
    4782             CALL iom_put( "GMID"  , fgmid2d ) 
    4783             CALL wrk_dealloc( jpi, jpj,  fgmid2d  ) 
    4784          ENDIF 
    4785          IF( med_diag%MZMI%dgsave ) THEN 
    4786             CALL iom_put( "MZMI"  , fdzmi2d ) 
    4787             CALL wrk_dealloc( jpi, jpj,   fdzmi2d   ) 
    4788          ENDIF 
    4789          IF( med_diag%GMEPN%dgsave ) THEN 
    4790             CALL iom_put( "GMEPN"  , fgmepn2d ) 
    4791             CALL wrk_dealloc( jpi, jpj,   fgmepn2d  ) 
    4792          ENDIF 
    4793          IF( med_diag%GMEPD%dgsave ) THEN 
    4794             CALL iom_put( "GMEPD"  , fgmepd2d ) 
    4795             CALL wrk_dealloc( jpi, jpj,   fgmepd2d   ) 
    4796          ENDIF 
    4797          IF( med_diag%GMEZMI%dgsave ) THEN 
    4798             CALL iom_put( "GMEZMI"  , fgmezmi2d ) 
    4799             CALL wrk_dealloc( jpi, jpj,   fgmezmi2d   ) 
    4800          ENDIF 
    4801          IF( med_diag%GMED%dgsave ) THEN 
    4802             CALL iom_put( "GMED"  , fgmed2d ) 
    4803             CALL wrk_dealloc( jpi, jpj,    fgmed2d  ) 
    4804          ENDIF 
    4805          IF( med_diag%MZME%dgsave ) THEN 
    4806             CALL iom_put( "MZME"  , fdzme2d ) 
    4807             CALL wrk_dealloc( jpi, jpj,  fdzme2d    ) 
    4808          ENDIF 
    4809          !  IF( med_diag%DEXP%dgsave ) THEN 
    4810          !      CALL iom_put( "DEXP"  , ftot_n ) 
    4811          !  ENDIF 
    4812          IF( med_diag%DETN%dgsave ) THEN 
    4813             CALL iom_put( "DETN"  , fslown2d ) 
    4814             CALL wrk_dealloc( jpi, jpj,  fslown2d    ) 
    4815          ENDIF 
    4816          IF( med_diag%MDET%dgsave ) THEN 
    4817             CALL iom_put( "MDET"  , fdd2d ) 
    4818             CALL wrk_dealloc( jpi, jpj,   fdd2d   ) 
    4819          ENDIF 
    4820          IF( med_diag%AEOLIAN%dgsave ) THEN 
    4821             CALL iom_put( "AEOLIAN"  , ffetop2d ) 
    4822             CALL wrk_dealloc( jpi, jpj,   ffetop2d   ) 
    4823          ENDIF 
    4824          IF( med_diag%BENTHIC%dgsave ) THEN 
    4825             CALL iom_put( "BENTHIC"  , ffebot2d ) 
    4826             CALL wrk_dealloc( jpi, jpj,   ffebot2d   ) 
    4827          ENDIF 
    4828          IF( med_diag%SCAVENGE%dgsave ) THEN 
    4829             CALL iom_put( "SCAVENGE"  , ffescav2d ) 
    4830             CALL wrk_dealloc( jpi, jpj,   ffescav2d  ) 
    4831          ENDIF 
    4832          !!  
    4833          IF( med_diag%TOTREG_N%dgsave ) THEN 
    4834             CALL iom_put( "TOTREG_N"  , fregen2d ) 
    4835             CALL wrk_dealloc( jpi, jpj,   fregen2d   ) 
    4836          ENDIF 
    4837          IF( med_diag%TOTRG_SI%dgsave ) THEN 
    4838             CALL iom_put( "TOTRG_SI"  , fregensi2d ) 
    4839             CALL wrk_dealloc( jpi, jpj,    fregensi2d  ) 
    4840          ENDIF 
    4841          !!  
    4842          IF( med_diag%FASTN%dgsave ) THEN 
    4843             CALL iom_put( "FASTN"  , ftempn2d ) 
    4844             CALL wrk_dealloc( jpi, jpj,   ftempn2d   ) 
    4845          ENDIF 
    4846          IF( med_diag%FASTSI%dgsave ) THEN 
    4847             CALL iom_put( "FASTSI"  , ftempsi2d ) 
    4848             CALL wrk_dealloc( jpi, jpj,   ftempsi2d   ) 
    4849          ENDIF 
    4850          IF( med_diag%FASTFE%dgsave ) THEN 
    4851             CALL iom_put( "FASTFE"  , ftempfe2d ) 
    4852             CALL wrk_dealloc( jpi, jpj,    ftempfe2d  ) 
    4853          ENDIF 
    4854          IF( med_diag%FASTC%dgsave ) THEN 
    4855             CALL iom_put( "FASTC"  , ftempc2d ) 
    4856             CALL wrk_dealloc( jpi, jpj,  ftempc2d    ) 
    4857          ENDIF 
    4858          IF( med_diag%FASTCA%dgsave ) THEN 
    4859             CALL iom_put( "FASTCA"  , ftempca2d ) 
    4860             CALL wrk_dealloc( jpi, jpj,  ftempca2d   ) 
    4861          ENDIF 
    4862          !!  
    4863          IF( med_diag%REMINN%dgsave ) THEN 
    4864             CALL iom_put( "REMINN"  , freminn2d ) 
    4865             CALL wrk_dealloc( jpi, jpj,   freminn2d   ) 
    4866          ENDIF 
    4867          IF( med_diag%REMINSI%dgsave ) THEN 
    4868             CALL iom_put( "REMINSI"  , freminsi2d ) 
    4869             CALL wrk_dealloc( jpi, jpj,   freminsi2d   ) 
    4870          ENDIF 
    4871          IF( med_diag%REMINFE%dgsave ) THEN 
    4872             CALL iom_put( "REMINFE"  , freminfe2d ) 
    4873             CALL wrk_dealloc( jpi, jpj,  freminfe2d    ) 
    4874          ENDIF 
    4875          IF( med_diag%REMINC%dgsave ) THEN 
    4876             CALL iom_put( "REMINC"  , freminc2d ) 
    4877             CALL wrk_dealloc( jpi, jpj,    freminc2d  ) 
    4878          ENDIF 
    4879          IF( med_diag%REMINCA%dgsave ) THEN 
    4880             CALL iom_put( "REMINCA"  , freminca2d ) 
    4881             CALL wrk_dealloc( jpi, jpj,   freminca2d  ) 
    4882          ENDIF 
    4883          IF( med_diag%SEAFLRN%dgsave ) THEN 
    4884             CALL iom_put( "SEAFLRN"  , fsedn ) 
    4885          ENDIF 
    4886          IF( med_diag%SEAFLRSI%dgsave ) THEN 
    4887             CALL iom_put( "SEAFLRSI"  , fsedsi ) 
    4888          ENDIF 
    4889          IF( med_diag%SEAFLRFE%dgsave ) THEN 
    4890             CALL iom_put( "SEAFLRFE"  , fsedfe ) 
    4891          ENDIF 
    4892          IF( med_diag%SEAFLRC%dgsave ) THEN 
    4893             CALL iom_put( "SEAFLRC"  , fsedc ) 
    4894          ENDIF 
    4895          IF( med_diag%SEAFLRCA%dgsave ) THEN 
    4896             CALL iom_put( "SEAFLRCA"  , fsedca ) 
    4897          ENDIF 
    4898          !! 
    4899 # if defined key_roam             
    4900          !! 
    4901          IF( med_diag%RIV_N%dgsave ) THEN 
    4902             CALL iom_put( "RIV_N"  , rivn2d ) 
    4903             CALL wrk_dealloc( jpi, jpj,    rivn2d  ) 
    4904          ENDIF 
    4905          IF( med_diag%RIV_SI%dgsave ) THEN 
    4906             CALL iom_put( "RIV_SI"  , rivsi2d ) 
    4907             CALL wrk_dealloc( jpi, jpj,   rivsi2d   ) 
    4908          ENDIF 
    4909          IF( med_diag%RIV_C%dgsave ) THEN 
    4910             CALL iom_put( "RIV_C"  , rivc2d ) 
    4911             CALL wrk_dealloc( jpi, jpj,    rivc2d  ) 
    4912          ENDIF 
    4913          IF( med_diag%RIV_ALK%dgsave ) THEN 
    4914             CALL iom_put( "RIV_ALK"  , rivalk2d ) 
    4915             CALL wrk_dealloc( jpi, jpj,  rivalk2d    ) 
    4916          ENDIF 
    4917          IF( med_diag%DETC%dgsave ) THEN 
    4918             CALL iom_put( "DETC"  , fslowc2d ) 
    4919             CALL wrk_dealloc( jpi, jpj,   fslowc2d   ) 
    4920          ENDIF 
    4921          !! 
    4922          IF( med_diag%PN_LLOSS%dgsave ) THEN 
    4923             CALL iom_put( "PN_LLOSS"  , fdpn22d ) 
    4924             CALL wrk_dealloc( jpi, jpj,   fdpn22d   ) 
    4925          ENDIF 
    4926          IF( med_diag%PD_LLOSS%dgsave ) THEN 
    4927             CALL iom_put( "PD_LLOSS"  , fdpd22d ) 
    4928             CALL wrk_dealloc( jpi, jpj,   fdpd22d   ) 
    4929          ENDIF 
    4930          IF( med_diag%ZI_LLOSS%dgsave ) THEN 
    4931             CALL iom_put( "ZI_LLOSS"  , fdzmi22d ) 
    4932              CALL wrk_dealloc( jpi, jpj,    fdzmi22d  ) 
    4933           ENDIF 
    4934           IF( med_diag%ZE_LLOSS%dgsave ) THEN 
    4935              CALL iom_put( "ZE_LLOSS"  , fdzme22d ) 
    4936              CALL wrk_dealloc( jpi, jpj,   fdzme22d   ) 
    4937           ENDIF 
    4938           IF( med_diag%ZI_MES_N%dgsave ) THEN 
    4939              CALL iom_put( "ZI_MES_N"  , zimesn2d ) 
    4940              CALL wrk_dealloc( jpi, jpj,    zimesn2d  ) 
    4941           ENDIF 
    4942           IF( med_diag%ZI_MES_D%dgsave ) THEN 
    4943              CALL iom_put( "ZI_MES_D"  , zimesd2d ) 
    4944              CALL wrk_dealloc( jpi, jpj,    zimesd2d  ) 
    4945           ENDIF 
    4946           IF( med_diag%ZI_MES_C%dgsave ) THEN 
    4947              CALL iom_put( "ZI_MES_C"  , zimesc2d ) 
    4948              CALL wrk_dealloc( jpi, jpj,    zimesc2d  ) 
    4949           ENDIF 
    4950           IF( med_diag%ZI_MESDC%dgsave ) THEN 
    4951              CALL iom_put( "ZI_MESDC"  ,zimesdc2d  ) 
    4952              CALL wrk_dealloc( jpi, jpj,    zimesdc2d  ) 
    4953           ENDIF 
    4954           IF( med_diag%ZI_EXCR%dgsave ) THEN 
    4955              CALL iom_put( "ZI_EXCR"  , ziexcr2d ) 
    4956              CALL wrk_dealloc( jpi, jpj,    ziexcr2d ) 
    4957           ENDIF 
    4958           IF( med_diag%ZI_RESP%dgsave ) THEN 
    4959              CALL iom_put( "ZI_RESP"  , ziresp2d ) 
    4960              CALL wrk_dealloc( jpi, jpj,   ziresp2d   ) 
    4961           ENDIF 
    4962           IF( med_diag%ZI_GROW%dgsave ) THEN 
    4963              CALL iom_put( "ZI_GROW"  , zigrow2d ) 
    4964              CALL wrk_dealloc( jpi, jpj,   zigrow2d   ) 
    4965           ENDIF 
    4966           IF( med_diag%ZE_MES_N%dgsave ) THEN 
    4967              CALL iom_put( "ZE_MES_N"  , zemesn2d ) 
    4968              CALL wrk_dealloc( jpi, jpj,    zemesn2d  ) 
    4969           ENDIF 
    4970           IF( med_diag%ZE_MES_D%dgsave ) THEN 
    4971              CALL iom_put( "ZE_MES_D"  , zemesd2d ) 
    4972              CALL wrk_dealloc( jpi, jpj,    zemesd2d  ) 
    4973           ENDIF 
    4974           IF( med_diag%ZE_MES_C%dgsave ) THEN 
    4975              CALL iom_put( "ZE_MES_C"  , zemesc2d ) 
    4976              CALL wrk_dealloc( jpi, jpj,   zemesc2d   ) 
    4977           ENDIF 
    4978           IF( med_diag%ZE_MESDC%dgsave ) THEN 
    4979              CALL iom_put( "ZE_MESDC"  , zemesdc2d ) 
    4980              CALL wrk_dealloc( jpi, jpj,   zemesdc2d   ) 
    4981           ENDIF 
    4982           IF( med_diag%ZE_EXCR%dgsave ) THEN 
    4983              CALL iom_put( "ZE_EXCR"  , zeexcr2d ) 
    4984              CALL wrk_dealloc( jpi, jpj,   zeexcr2d   ) 
    4985           ENDIF 
    4986           IF( med_diag%ZE_RESP%dgsave ) THEN 
    4987              CALL iom_put( "ZE_RESP"  , zeresp2d ) 
    4988              CALL wrk_dealloc( jpi, jpj,    zeresp2d  ) 
    4989           ENDIF 
    4990           IF( med_diag%ZE_GROW%dgsave ) THEN 
    4991              CALL iom_put( "ZE_GROW"  , zegrow2d ) 
    4992              CALL wrk_dealloc( jpi, jpj,   zegrow2d   ) 
    4993           ENDIF 
    4994           IF( med_diag%MDETC%dgsave ) THEN 
    4995              CALL iom_put( "MDETC"  , mdetc2d ) 
    4996              CALL wrk_dealloc( jpi, jpj,   mdetc2d   ) 
    4997           ENDIF 
    4998           IF( med_diag%GMIDC%dgsave ) THEN 
    4999              CALL iom_put( "GMIDC"  , gmidc2d ) 
    5000              CALL wrk_dealloc( jpi, jpj,    gmidc2d  ) 
    5001           ENDIF 
    5002           IF( med_diag%GMEDC%dgsave ) THEN 
    5003              CALL iom_put( "GMEDC"  , gmedc2d ) 
    5004              CALL wrk_dealloc( jpi, jpj,    gmedc2d  ) 
    5005           ENDIF 
    5006           IF( med_diag%IBEN_N%dgsave ) THEN 
    5007              CALL iom_put( "IBEN_N"  , iben_n2d ) 
    5008              CALL wrk_dealloc( jpi, jpj,    iben_n2d  ) 
    5009           ENDIF 
    5010           IF( med_diag%IBEN_FE%dgsave ) THEN 
    5011              CALL iom_put( "IBEN_FE"  , iben_fe2d ) 
    5012              CALL wrk_dealloc( jpi, jpj,   iben_fe2d   ) 
    5013           ENDIF 
    5014           IF( med_diag%IBEN_C%dgsave ) THEN 
    5015              CALL iom_put( "IBEN_C"  , iben_c2d ) 
    5016              CALL wrk_dealloc( jpi, jpj,   iben_c2d   ) 
    5017           ENDIF 
    5018           IF( med_diag%IBEN_SI%dgsave ) THEN 
    5019              CALL iom_put( "IBEN_SI"  , iben_si2d ) 
    5020              CALL wrk_dealloc( jpi, jpj,   iben_si2d   ) 
    5021           ENDIF 
    5022           IF( med_diag%IBEN_CA%dgsave ) THEN 
    5023              CALL iom_put( "IBEN_CA"  , iben_ca2d ) 
    5024              CALL wrk_dealloc( jpi, jpj,   iben_ca2d   ) 
    5025           ENDIF 
    5026           IF( med_diag%OBEN_N%dgsave ) THEN 
    5027              CALL iom_put( "OBEN_N"  , oben_n2d ) 
    5028              CALL wrk_dealloc( jpi, jpj,    oben_n2d  ) 
    5029           ENDIF 
    5030           IF( med_diag%OBEN_FE%dgsave ) THEN 
    5031              CALL iom_put( "OBEN_FE"  , oben_fe2d ) 
    5032              CALL wrk_dealloc( jpi, jpj,    oben_fe2d  ) 
    5033           ENDIF 
    5034           IF( med_diag%OBEN_C%dgsave ) THEN 
    5035              CALL iom_put( "OBEN_C"  , oben_c2d ) 
    5036              CALL wrk_dealloc( jpi, jpj,    oben_c2d  ) 
    5037           ENDIF 
    5038           IF( med_diag%OBEN_SI%dgsave ) THEN 
    5039              CALL iom_put( "OBEN_SI"  , oben_si2d ) 
    5040              CALL wrk_dealloc( jpi, jpj,    oben_si2d  ) 
    5041           ENDIF 
    5042           IF( med_diag%OBEN_CA%dgsave ) THEN 
    5043              CALL iom_put( "OBEN_CA"  , oben_ca2d ) 
    5044              CALL wrk_dealloc( jpi, jpj, oben_ca2d     ) 
    5045           ENDIF 
    5046           IF( med_diag%SFR_OCAL%dgsave ) THEN 
    5047              CALL iom_put( "SFR_OCAL"  , sfr_ocal2d ) 
    5048              CALL wrk_dealloc( jpi, jpj,    sfr_ocal2d  ) 
    5049           ENDIF 
    5050           IF( med_diag%SFR_OARG%dgsave ) THEN 
    5051              CALL iom_put( "SFR_OARG"  , sfr_oarg2d ) 
    5052              CALL wrk_dealloc( jpi, jpj,    sfr_oarg2d  ) 
    5053           ENDIF 
    5054           IF( med_diag%LYSO_CA%dgsave ) THEN 
    5055              CALL iom_put( "LYSO_CA"  , lyso_ca2d ) 
    5056              CALL wrk_dealloc( jpi, jpj,    lyso_ca2d  ) 
    5057           ENDIF 
    5058 # endif                    
    5059           !! 
    5060           !! ** 3D diagnostics 
    5061           IF( med_diag%TPP3%dgsave ) THEN 
    5062              CALL iom_put( "TPP3"  , tpp3d ) 
    5063              CALL wrk_dealloc( jpi, jpj, jpk,   tpp3d  ) 
    5064           ENDIF 
    5065           IF( med_diag%DETFLUX3%dgsave ) THEN 
    5066              CALL iom_put( "DETFLUX3"  , detflux3d ) 
    5067              CALL wrk_dealloc( jpi, jpj, jpk,    detflux3d ) 
    5068           ENDIF 
    5069           IF( med_diag%REMIN3N%dgsave ) THEN 
    5070              CALL iom_put( "REMIN3N"  , remin3dn ) 
    5071              CALL wrk_dealloc( jpi, jpj, jpk,   remin3dn  ) 
    5072           ENDIF 
    5073 # if defined key_roam           
    5074           IF( med_diag%PH3%dgsave ) THEN 
    5075              CALL iom_put( "PH3"  , f3_pH ) 
    5076           ENDIF 
    5077           IF( med_diag%OM_CAL3%dgsave ) THEN 
    5078              CALL iom_put( "OM_CAL3"  , f3_omcal ) 
    5079           ENDIF 
    5080           !! 
    5081           !! AXY (09/11/16): 2D CMIP6 diagnostics 
    5082           IF( med_diag%INTDISSIC%dgsave ) THEN 
    5083              CALL iom_put( "INTDISSIC"  , intdissic ) 
    5084              CALL wrk_dealloc( jpi, jpj, intdissic   ) 
    5085           ENDIF           
    5086           IF( med_diag%INTDISSIN%dgsave ) THEN 
    5087              CALL iom_put( "INTDISSIN"  , intdissin ) 
    5088              CALL wrk_dealloc( jpi, jpj, intdissin   ) 
    5089           ENDIF           
    5090           IF( med_diag%INTDISSISI%dgsave ) THEN 
    5091              CALL iom_put( "INTDISSISI"  , intdissisi ) 
    5092              CALL wrk_dealloc( jpi, jpj, intdissisi  ) 
    5093           ENDIF           
    5094           IF( med_diag%INTTALK%dgsave ) THEN 
    5095              CALL iom_put( "INTTALK"  , inttalk ) 
    5096              CALL wrk_dealloc( jpi, jpj, inttalk     ) 
    5097           ENDIF           
    5098           IF( med_diag%O2min%dgsave ) THEN 
    5099              CALL iom_put( "O2min"  , o2min ) 
    5100              CALL wrk_dealloc( jpi, jpj, o2min       ) 
    5101           ENDIF           
    5102           IF( med_diag%ZO2min%dgsave ) THEN 
    5103              CALL iom_put( "ZO2min"  , zo2min ) 
    5104              CALL wrk_dealloc( jpi, jpj, zo2min      ) 
    5105           ENDIF           
    5106           IF( med_diag%FBDDTALK%dgsave ) THEN 
    5107              CALL iom_put( "FBDDTALK"  , fbddtalk   ) 
    5108              CALL wrk_dealloc( jpi, jpj, fbddtalk   ) 
    5109           ENDIF           
    5110           IF( med_diag%FBDDTDIC%dgsave ) THEN 
    5111              CALL iom_put( "FBDDTDIC"  , fbddtdic   ) 
    5112              CALL wrk_dealloc( jpi, jpj, fbddtdic   ) 
    5113           ENDIF           
    5114           IF( med_diag%FBDDTDIFE%dgsave ) THEN 
    5115              CALL iom_put( "FBDDTDIFE" , fbddtdife  ) 
    5116              CALL wrk_dealloc( jpi, jpj, fbddtdife  ) 
    5117           ENDIF           
    5118           IF( med_diag%FBDDTDIN%dgsave ) THEN 
    5119              CALL iom_put( "FBDDTDIN"  , fbddtdin   ) 
    5120              CALL wrk_dealloc( jpi, jpj, fbddtdin   ) 
    5121           ENDIF           
    5122           IF( med_diag%FBDDTDISI%dgsave ) THEN 
    5123              CALL iom_put( "FBDDTDISI" , fbddtdisi  ) 
    5124              CALL wrk_dealloc( jpi, jpj, fbddtdisi  ) 
    5125           ENDIF     
    5126           !! 
    5127           !! AXY (09/11/16): 3D CMIP6 diagnostics 
    5128           IF( med_diag%TPPD3%dgsave ) THEN 
    5129              CALL iom_put( "TPPD3"     , tppd3 ) 
    5130              CALL wrk_dealloc( jpi, jpj, jpk, tppd3      ) 
    5131           ENDIF           
    5132           IF( med_diag%BDDTALK3%dgsave ) THEN 
    5133              CALL iom_put( "BDDTALK3"  , bddtalk3 ) 
    5134              CALL wrk_dealloc( jpi, jpj, jpk, bddtalk3   ) 
    5135           ENDIF           
    5136           IF( med_diag%BDDTDIC3%dgsave ) THEN 
    5137              CALL iom_put( "BDDTDIC3"  , bddtdic3 ) 
    5138              CALL wrk_dealloc( jpi, jpj, jpk, bddtdic3   ) 
    5139           ENDIF           
    5140           IF( med_diag%BDDTDIFE3%dgsave ) THEN 
    5141              CALL iom_put( "BDDTDIFE3" , bddtdife3 ) 
    5142              CALL wrk_dealloc( jpi, jpj, jpk, bddtdife3  ) 
    5143           ENDIF           
    5144           IF( med_diag%BDDTDIN3%dgsave ) THEN 
    5145              CALL iom_put( "BDDTDIN3"  , bddtdin3 ) 
    5146              CALL wrk_dealloc( jpi, jpj, jpk, bddtdin3   ) 
    5147           ENDIF           
    5148           IF( med_diag%BDDTDISI3%dgsave ) THEN 
    5149              CALL iom_put( "BDDTDISI3" , bddtdisi3 ) 
    5150              CALL wrk_dealloc( jpi, jpj, jpk, bddtdisi3  ) 
    5151           ENDIF     
    5152           IF( med_diag%FD_NIT3%dgsave ) THEN 
    5153              CALL iom_put( "FD_NIT3"  , fd_nit3 ) 
    5154              CALL wrk_dealloc( jpi, jpj, jpk,   fd_nit3  ) 
    5155           ENDIF 
    5156           IF( med_diag%FD_SIL3%dgsave ) THEN 
    5157              CALL iom_put( "FD_SIL3"  , fd_sil3 ) 
    5158              CALL wrk_dealloc( jpi, jpj, jpk,   fd_sil3  ) 
    5159           ENDIF 
    5160           IF( med_diag%FD_CAL3%dgsave ) THEN 
    5161              CALL iom_put( "FD_CAL3"  , fd_cal3 ) 
    5162              CALL wrk_dealloc( jpi, jpj, jpk,   fd_cal3  ) 
    5163           ENDIF 
    5164           IF( med_diag%FD_CAR3%dgsave ) THEN 
    5165              CALL iom_put( "FD_CAR3"  , fd_car3 ) 
    5166              CALL wrk_dealloc( jpi, jpj, jpk,   fd_car3  ) 
    5167           ENDIF 
    5168           IF( med_diag%CO33%dgsave ) THEN 
    5169              CALL iom_put( "CO33"  , f3_co3 ) 
    5170           ENDIF                     
    5171           IF( med_diag%CO3SATARAG3%dgsave ) THEN 
    5172              CALL iom_put( "CO3SATARAG3"  , f3_omarg ) 
    5173           ENDIF                     
    5174           IF( med_diag%CO3SATCALC3%dgsave ) THEN 
    5175              CALL iom_put( "CO3SATCALC3"  , f3_omcal ) 
    5176           ENDIF                     
    5177           IF( med_diag%EXPC3%dgsave ) THEN 
    5178              CALL iom_put( "EXPC3"  , expc3 ) 
    5179              CALL wrk_dealloc( jpi, jpj, jpk, expc3  ) 
    5180           ENDIF                     
    5181           IF( med_diag%EXPN3%dgsave ) THEN 
    5182              CALL iom_put( "EXPN3"  , expn3 ) 
    5183              CALL wrk_dealloc( jpi, jpj, jpk, expn3  ) 
    5184           ENDIF                     
    5185           IF( med_diag%DCALC3%dgsave ) THEN 
    5186              CALL iom_put( "DCALC3"  , dcalc3 ) 
    5187              CALL wrk_dealloc( jpi, jpj, jpk, dcalc3  ) 
    5188           ENDIF                     
    5189           IF( med_diag%FEDISS3%dgsave ) THEN 
    5190              CALL iom_put( "FEDISS3"  , fediss3 ) 
    5191              CALL wrk_dealloc( jpi, jpj, jpk, fediss3  ) 
    5192           ENDIF                     
    5193           IF( med_diag%FESCAV3%dgsave ) THEN 
    5194              CALL iom_put( "FESCAV3"  , fescav3 ) 
    5195              CALL wrk_dealloc( jpi, jpj, jpk, fescav3  ) 
    5196           ENDIF                     
    5197           IF( med_diag%MIGRAZP3%dgsave ) THEN 
    5198              CALL iom_put( "MIGRAZP3"  , migrazp3 ) 
    5199              CALL wrk_dealloc( jpi, jpj, jpk, migrazp3  ) 
    5200           ENDIF                     
    5201           IF( med_diag%MIGRAZD3%dgsave ) THEN 
    5202              CALL iom_put( "MIGRAZD3"  , migrazd3 ) 
    5203              CALL wrk_dealloc( jpi, jpj, jpk, migrazd3  ) 
    5204           ENDIF                     
    5205           IF( med_diag%MEGRAZP3%dgsave ) THEN 
    5206              CALL iom_put( "MEGRAZP3"  , megrazp3 ) 
    5207              CALL wrk_dealloc( jpi, jpj, jpk, megrazp3  ) 
    5208           ENDIF                     
    5209           IF( med_diag%MEGRAZD3%dgsave ) THEN 
    5210              CALL iom_put( "MEGRAZD3"  , megrazd3 ) 
    5211              CALL wrk_dealloc( jpi, jpj, jpk, megrazd3  ) 
    5212           ENDIF                     
    5213           IF( med_diag%MEGRAZZ3%dgsave ) THEN 
    5214              CALL iom_put( "MEGRAZZ3"  , megrazz3 ) 
    5215              CALL wrk_dealloc( jpi, jpj, jpk, megrazz3  ) 
    5216           ENDIF                     
    5217           IF( med_diag%O2SAT3%dgsave ) THEN 
    5218              CALL iom_put( "O2SAT3"  , o2sat3 ) 
    5219              CALL wrk_dealloc( jpi, jpj, jpk, o2sat3 ) 
    5220           ENDIF                     
    5221           IF( med_diag%PBSI3%dgsave ) THEN 
    5222              CALL iom_put( "PBSI3"  , pbsi3 ) 
    5223              CALL wrk_dealloc( jpi, jpj, jpk, pbsi3  ) 
    5224           ENDIF                     
    5225           IF( med_diag%PCAL3%dgsave ) THEN 
    5226              CALL iom_put( "PCAL3"  , pcal3 ) 
    5227              CALL wrk_dealloc( jpi, jpj, jpk, pcal3  ) 
    5228           ENDIF                     
    5229           IF( med_diag%REMOC3%dgsave ) THEN 
    5230              CALL iom_put( "REMOC3"  , remoc3 ) 
    5231              CALL wrk_dealloc( jpi, jpj, jpk, remoc3 ) 
    5232           ENDIF                     
    5233           IF( med_diag%PNLIMJ3%dgsave ) THEN 
    5234              CALL iom_put( "PNLIMJ3" , pnlimj3 ) 
    5235              CALL wrk_dealloc( jpi, jpj, jpk, pnlimj3  ) 
    5236           ENDIF                     
    5237           IF( med_diag%PNLIMN3%dgsave ) THEN 
    5238              CALL iom_put( "PNLIMN3" , pnlimn3 ) 
    5239              CALL wrk_dealloc( jpi, jpj, jpk, pnlimn3  ) 
    5240           ENDIF                     
    5241           IF( med_diag%PNLIMFE3%dgsave ) THEN 
    5242              CALL iom_put( "PNLIMFE3" , pnlimfe3 ) 
    5243              CALL wrk_dealloc( jpi, jpj, jpk, pnlimfe3 ) 
    5244           ENDIF                     
    5245           IF( med_diag%PDLIMJ3%dgsave ) THEN 
    5246              CALL iom_put( "PDLIMJ3" , pdlimj3 ) 
    5247              CALL wrk_dealloc( jpi, jpj, jpk, pdlimj3  ) 
    5248           ENDIF                     
    5249           IF( med_diag%PDLIMN3%dgsave ) THEN 
    5250              CALL iom_put( "PDLIMN3" , pdlimn3 ) 
    5251              CALL wrk_dealloc( jpi, jpj, jpk, pdlimn3  ) 
    5252           ENDIF                     
    5253           IF( med_diag%PDLIMFE3%dgsave ) THEN 
    5254              CALL iom_put( "PDLIMFE3" , pdlimfe3 ) 
    5255              CALL wrk_dealloc( jpi, jpj, jpk, pdlimfe3 ) 
    5256           ENDIF                     
    5257           IF( med_diag%PDLIMSI3%dgsave ) THEN 
    5258              CALL iom_put( "PDLIMSI3" , pdlimsi3 ) 
    5259              CALL wrk_dealloc( jpi, jpj, jpk, pdlimsi3 ) 
    5260           ENDIF                     
    5261            
    5262 # endif          
    5263  
    5264           CALL wrk_dealloc( jpi, jpj,   zw2d   ) 
    5265  
    5266        ENDIF                    ! end of ln_diatrc option 
     4275      CALL bio_medusa_fin( kt ) 
    52674276 
    52684277# if defined key_trc_diabio 
Note: See TracChangeset for help on using the changeset viewer.