New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 8642 for branches/NERC/dev_r5518_GO6_Carb_Debug/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90 – NEMO

Ignore:
Timestamp:
2017-10-19T18:10:44+02:00 (7 years ago)
Author:
jpalmier
Message:

jpalm --19-10-17-- Carb failure due to 1-cell exceptionnal and ephemeral T increase - update T passed to MEDUSA and add kill switch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5518_GO6_Carb_Debug/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcbio_medusa.F90

    r8442 r8642  
    177177      !! temporary variables 
    178178      REAL(wp) ::    fq0,fq1,fq2,fq3,fq4 
     179      !! 
     180      !! T and S check temporary variable 
     181      REAL(wp) ::    sumtsn, tsnavg 
     182      INTEGER  ::    summask 
    179183      !! 
    180184      !!------------------------------------------------------------------ 
     
    474478                  if (ztmp(ji,jj) .lt. -3.0 .or. ztmp(ji,jj) .gt. 40.0 ) then 
    475479                     IF(lwp) WRITE(numout,*)                                 & 
    476                         ' trc_bio_medusa: T WARNING 2D, ',                   & 
     480                        ' trc_bio_medusa: T WARNING 3D, ',                   & 
    477481                        tsb(ji,jj,jk,jp_tem), tsn(ji,jj,jk,jp_tem),          & 
    478482                        ' at (', ji, ',', jj, ',', jk, ') at time', kt 
    479            IF(lwp) WRITE(numout,*)                                 & 
    480                         ' trc_bio_medusa: T SWITCHING 2D, ',                 & 
    481                         tsn(ji,jj,jk,jp_tem), ' -> ', tsb(ji,jj,jk,jp_tem) 
    482                      !! temperatur 
     483                     !! temperature 
    483484                     ztmp(ji,jj) = tsb(ji,jj,jk,jp_tem) 
     485                      IF(lwp) WRITE(numout,*)                                 & 
     486                     ' trc_bio_medusa: Abnormal T suroundings Temp' 
     487                      IF(lwp) WRITE(numout,*)                                 & 
     488                     tsn(ji-1,jj+1,jk,jp_tem), tsn(ji,jj+1,jk,jp_tem), tsn(ji+1,jj+1,jk,jp_tem) 
     489                      IF(lwp) WRITE(numout,*)                                 & 
     490                     tsn(ji-1,jj,jk,jp_tem), tsn(ji,jj,jk,jp_tem), tsn(ji+1,jj,jk,jp_tem) 
     491                      IF(lwp) WRITE(numout,*)                                 & 
     492                     tsn(ji-1,jj-1,jk,jp_tem), tsn(ji,jj-1,jk,jp_tem), tsn(ji+1,jj-1,jk,jp_tem) 
     493                     sumtsn = ( tmask(ji-1,jj+1,jk) * tsn(ji-1,jj+1,jk,jp_tem) ) + &  
     494                              ( tmask(ji  ,jj+1,jk) * tsn(ji  ,jj+1,jk,jp_tem) ) + &  
     495                              ( tmask(ji+1,jj+1,jk) * tsn(ji+1,jj+1,jk,jp_tem) ) + &  
     496                              ( tmask(ji-1,jj  ,jk) * tsn(ji-1,jj  ,jk,jp_tem) ) + &  
     497                              ( tmask(ji+1,jj  ,jk) * tsn(ji+1,jj  ,jk,jp_tem) ) + &  
     498                              ( tmask(ji-1,jj-1,jk) * tsn(ji-1,jj-1,jk,jp_tem) ) + &  
     499                              ( tmask(ji  ,jj-1,jk) * tsn(ji  ,jj-1,jk,jp_tem) ) + &  
     500                              ( tmask(ji+1,jj-1,jk) * tsn(ji+1,jj-1,jk,jp_tem) ) 
     501                      IF(lwp) WRITE(numout,*)                                 & 
     502                     ' trc_bio_medusa: Abnormal T suroundings Sal' 
     503                      IF(lwp) WRITE(numout,*)                                 & 
     504                     tsn(ji-1,jj+1,jk,jp_sal), tsn(ji,jj+1,jk,jp_sal), tsn(ji+1,jj+1,jk,jp_sal) 
     505                      IF(lwp) WRITE(numout,*)                                 & 
     506                     tsn(ji-1,jj,jk,jp_sal), tsn(ji,jj,jk,jp_sal), tsn(ji+1,jj,jk,jp_sal) 
     507                      IF(lwp) WRITE(numout,*)                                 & 
     508                     tsn(ji-1,jj-1,jk,jp_sal), tsn(ji,jj-1,jk,jp_sal), tsn(ji+1,jj-1,jk,jp_sal) 
     509                     !! 
     510                      IF(lwp) WRITE(numout,*)                                 & 
     511                     ' trc_bio_medusa: Abnormal T suroundings DIC' 
     512                      IF(lwp) WRITE(numout,*)                                 & 
     513                     trn(ji-1,jj+1,jk,jpdic), trn(ji,jj+1,jk,jpdic), trn(ji+1,jj+1,jk,jpdic) 
     514                      IF(lwp) WRITE(numout,*)                                 & 
     515                     trn(ji-1,jj,jk,jpdic), trn(ji,jj,jk,jpdic), trn(ji+1,jj,jk,jpdic) 
     516                      IF(lwp) WRITE(numout,*)                                 & 
     517                     trn(ji-1,jj-1,jk,jpdic), trn(ji,jj-1,jk,jpdic), trn(ji+1,jj-1,jk,jpdic) 
     518                      IF(lwp) WRITE(numout,*)                                 & 
     519                     ' trc_bio_medusa: Abnormal T suroundings Alk' 
     520                      IF(lwp) WRITE(numout,*)                                 & 
     521                     trn(ji-1,jj+1,jk,jpalk), trn(ji,jj+1,jk,jpalk), trn(ji+1,jj+1,jk,jpalk) 
     522                      IF(lwp) WRITE(numout,*)                                 & 
     523                     trn(ji-1,jj,jk,jpalk), trn(ji,jj,jk,jpalk), trn(ji+1,jj,jk,jpalk) 
     524                      IF(lwp) WRITE(numout,*)                                 & 
     525                     trn(ji-1,jj-1,jk,jpalk), trn(ji,jj-1,jk,jpalk), trn(ji+1,jj-1,jk,jpalk) 
     526                      IF(lwp) WRITE(numout,*)                                 & 
     527                     ' trc_bio_medusa: Abnormal T suroundings tmask' 
     528                      IF(lwp) WRITE(numout,*)                                 & 
     529                     tmask(ji-1,jj+1,jk), tmask(ji,jj+1,jk), tmask(ji+1,jj+1,jk) 
     530                      IF(lwp) WRITE(numout,*)                                 & 
     531                     tmask(ji-1,jj,jk), tmask(ji,jj,jk), tmask(ji+1,jj,jk) 
     532                      IF(lwp) WRITE(numout,*)                                 & 
     533                     tmask(ji-1,jj-1,jk), tmask(ji,jj-1,jk), tmask(ji+1,jj-1,jk) 
     534                     summask = tmask(ji-1,jj+1,jk) + tmask(ji  ,jj+1,jk)   +  & 
     535                               tmask(ji+1,jj+1,jk) + tmask(ji-1,jj  ,jk)   +  & 
     536                               tmask(ji+1,jj  ,jk) + tmask(ji-1,jj-1,jk)   +  &  
     537                               tmask(ji  ,jj-1,jk) + tmask(ji+1,jj-1,jk)  
     538                     tsnavg = ( sumtsn / summask ) 
     539                     !! Correct out of range values 
     540                     IF ( ( summask .EQ. 0.0 ) .OR. (tsnavg .LT. -3.0 ) .OR.   & 
     541                          ( tsnavg .GT. 40.0 ) ) THEN     
     542                        IF (ztmp(ji,jj) .LT. -3.0 ) THEN 
     543                           IF(lwp) WRITE(numout,*)                           & 
     544                           ' trc_bio_medusa: T SWITCHING 3D, ',              & 
     545                           tsn(ji,jj,jk,jp_tem), ' -> -3.0 ' 
     546                           ztmp(ji,jj) = -3.0 
     547                        ENDIF 
     548                        IF (ztmp(ji,jj) .GT. 40.0 ) THEN 
     549                           IF(lwp) WRITE(numout,*)                           & 
     550                           ' trc_bio_medusa: T SWITCHING 3D, ',              & 
     551                           tsn(ji,jj,jk,jp_tem), ' -> 40.0 ' 
     552                           ztmp(ji,jj) = 40.0 
     553                        ENDIF 
     554                     ELSE  
     555                        IF(lwp) WRITE(numout,*)                              & 
     556                        ' trc_bio_medusa: T SWITCHING 3D, ',                 & 
     557                        tsn(ji,jj,jk,jp_tem), ' -> surounding avg : ', tsnavg 
     558                        ztmp(ji,jj) = tsnavg 
     559                     ENDIF 
    484560                  endif 
    485                   if (zsal(ji,jj) .lt. 0.0 .or. zsal(ji,jj) .gt. 45.0 ) then 
     561                  !! end T chack 
     562                  if (zsal(ji,jj) .lt. 1.0 .or. zsal(ji,jj) .gt. 47.0 ) then 
    486563                     IF(lwp) WRITE(numout,*)                                 & 
    487564                        ' trc_bio_medusa: S WARNING 2D, ',                   & 
    488565                        tsb(ji,jj,jk,jp_sal), tsn(ji,jj,jk,jp_sal),          & 
    489566                        ' at (', ji, ',', jj, ',', jk, ') at time', kt 
     567                     !! Correct out of range values 
     568                     IF (zsal(ji,jj) .LT. 1.0 ) THEN 
     569                        IF(lwp) WRITE(numout,*)                              & 
     570                        ' trc_bio_medusa: S SWITCHING 3D, ',                 & 
     571                        tsn(ji,jj,jk,jp_sal), ' -> 1.0 ' 
     572                        zsal(ji,jj) = 1.0 
     573                     ENDIF 
     574                     IF (zsal(ji,jj) .GT. 47.0 ) THEN 
     575                        IF(lwp) WRITE(numout,*)                              & 
     576                        ' trc_bio_medusa: T SWITCHING 3D, ',                 & 
     577                        tsn(ji,jj,jk,jp_sal), ' -> 47.0 ' 
     578                        zsal(ji,jj) = 47.0 
     579                     ENDIF 
    490580                  endif 
     581                  !! end S check 
    491582               ENDIF 
    492583            ENDDO 
Note: See TracChangeset for help on using the changeset viewer.