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 7284 – NEMO

Changeset 7284


Ignore:
Timestamp:
2016-11-21T13:29:00+01:00 (7 years ago)
Author:
isabella
Message:

Added corrections to the equations

Location:
branches/UKMO/dev_r5518_pcbias_ipc/NEMOGCM/NEMO/OPA_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_pcbias_ipc/NEMOGCM/NEMO/OPA_SRC/ASM/bias.F90

    r7201 r7284  
    595595 
    596596      ztscale = 0.1_wp 
    597       zwgt    = 1.0_wp 
     597      zwgt    = 0.8_wp 
    598598 
    599599      IF ( ln_bias_asm ) THEN 
     
    610610 
    611611            zdecay = (1-ztscale)**(1/real(ztsday)) ! used in ipc 
    612             zfrac1 = max(0.0_wp, zdecay**real(kt)) ! used in ipc 
     612            zfrac1 = zdecay**real(kt) ! used in ipc 
     613            IF ( zfrac1 <= 0.0 ) zfrac1 = 0.0_wp 
    613614 
    614615 
     
    627628                     WRITE(numout,* ) "proportion of  historical pcbias applied ",t_asm_mem**(real(kt)/ztsday) 
    628629                  ENDIF 
    629             
     630 
     631 
    630632                  DO jk = 1, jpkm1 
     633                      
    631634                     tbias(:,:,jk) = tbias(:,:,jk) +                            & 
    632635                     &                ( t_asm_mem**(real(kt)/ztsday) * tbias_asm(:,:,jk)  +                    & 
     
    646649                  IF (ln_incpc) THEN 
    647650 
     651 
     652                     IF (lwp) THEN 
     653                       WRITE(numout,*) 'tra_bias : bias weights' 
     654                       WRITE(numout,*) '~~~~~~~~~~~~' 
     655                       WRITE(numout,* ) "IPC - proportion of  increment applied in pcbias ",ztfrac 
     656                       WRITE(numout,* ) "IPC - proportion of  historical pcbias applied ",zfrac1 
     657                     ENDIF 
     658 
    648659                     DO jk = 1, jpkm1 
    649                         tbias_i(:,:,jk) =  ( t_bkginc(:,:,jk) * zwgt * ztfrac * (1.0 - fbcoef_stscale(:,:)) )         & 
    650                         &                - ( tbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) 
    651                         sbias_i(:,:,jk) =  ( s_bkginc(:,:,jk) * zwgt * ztfrac * (1.0 - fbcoef_stscale(:,:)) )         & 
    652                         &                - ( sbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) 
     660 
     661                        tbias_i(:,:,jk) =  ( t_bkginc(:,:,jk) * tmask(:,:,jk)* zwgt * ztfrac * (1.0 - fbcoef_stscale(:,:)) )         & 
     662                        &                + ( tbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) 
     663                        sbias_i(:,:,jk) =  ( s_bkginc(:,:,jk) * tmask(:,:,jk)* zwgt * ztfrac * (1.0 - fbcoef_stscale(:,:)) )         & 
     664                        &                + ( sbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) 
     665 
    653666                     ENDDO 
    654                       
     667 
     668                  ENDIF 
     669 
     670                  IF ( .not.ln_bsyncro ) THEN  
     671 
    655672                     IF ( kt == nn_bias_itwrt ) THEN 
    656                         DO jk = 1, jpk 
    657                            tbias_asm_stscale_out(:,:,jk) = ( t_bkginc(:,:,jk) * zwgt * ztfrac ) + ( tbias_asm_stscale(:,:,jk) * zfrac1 ) 
    658                            sbias_asm_stscale_out(:,:,jk) = ( s_bkginc(:,:,jk) * zwgt * ztfrac ) + ( sbias_asm_stscale(:,:,jk) * zfrac1 ) 
    659                         ENDDO 
    660                      ENDIF 
    661                   ENDIF 
    662  
    663                   IF ( .not.ln_bsyncro ) THEN  
    664                      IF ( kt == nn_bias_itwrt ) THEN 
     673 
    665674                        DO jk = 1, jpkm1 
    666675                           tbias_asm_out(:,:,jk) =  t_asm_mem**(real(kt)/ztsday) * tbias_asm(:,:,jk)  +       & 
     
    669678                           &                     ztfrac * t_asm_upd * s_bkginc(:,:,jk) * tmask(:,:,jk) 
    670679                         END DO 
     680 
     681                        IF ( ln_incpc) THEN 
     682                           DO jk = 1, jpkm1 
     683                              tbias_asm_stscale_out(:,:,jk) = ( t_bkginc(:,:,jk) * tmask(:,:,jk) *  zwgt * ztfrac ) + ( tbias_asm_stscale(:,:,jk) * zfrac1 ) 
     684                              sbias_asm_stscale_out(:,:,jk) = ( s_bkginc(:,:,jk) * tmask(:,:,jk) *  zwgt * ztfrac ) + ( sbias_asm_stscale(:,:,jk) * zfrac1 ) 
     685                           ENDDO 
     686                        ENDIF 
     687 
    671688                     ENDIF 
     689 
    672690                  ENDIF 
    673691 
     
    681699                     END DO 
    682700 
     701                     IF (ln_incpc) THEN 
     702                        DO jk = 1, jpkm1 
     703                           tbias_asm_stscale(:,:,jk) = ( t_bkginc(:,:,jk) * tmask(:,:,jk) * zwgt * ztfrac ) + ( tbias_asm_stscale(:,:,jk) * zfrac1 ) 
     704                           sbias_asm_stscale(:,:,jk) = ( s_bkginc(:,:,jk) * tmask(:,:,jk) * zwgt * ztfrac ) + ( sbias_asm_stscale(:,:,jk) * zfrac1 ) 
     705                        ENDDO 
     706                     ENDIF 
    683707      
    684708                  ENDIF 
     
    704728                 IF (ln_incpc) THEN 
    705729 
    706                    zfrac  = max(0.0_wp, zdecay**real(kt-nitiaufin) ) 
    707                     
     730                   zfrac  = zdecay**real(kt-nitiaufin)  
     731                   IF ( zfrac <= 0.0 ) zfrac = 0.0_wp 
     732    
     733 
    708734                   DO jk = 1, jpkm1 
    709                       tbias_i(:,:,jk) = ( t_bkginc(:,:,jk) * zwgt * zfrac * (1.0 - fbcoef_stscale(:,:)) )         & 
    710                       &                - ( tbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) 
    711                       sbias_i(:,:,jk) =  ( s_bkginc(:,:,jk) * zwgt * zfrac * (1.0 - fbcoef_stscale(:,:)) )         & 
    712                       &                - ( sbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) 
     735                      tbias_i(:,:,jk) =  ( tbias_asm_stscale(:,:,jk) * zfrac * (1.0 - fbcoef_stscale(:,:) )  
     736                      sbias_i(:,:,jk) =  ( sbias_asm_stscale(:,:,jk) * zfrac * (1.0 - fbcoef_stscale(:,:) )  
    713737                   ENDDO 
    714738 
    715                    IF ( kt == nn_bias_itwrt ) THEN 
    716                       DO jk = 1, jpk 
    717                          tbias_asm_stscale_out(:,:,jk) = ( t_bkginc(:,:,jk) * zwgt * zfrac ) + ( tbias_asm_stscale(:,:,jk) * zfrac1 ) 
    718                          sbias_asm_stscale_out(:,:,jk) = ( s_bkginc(:,:,jk) * zwgt * zfrac ) + ( sbias_asm_stscale(:,:,jk) * zfrac1 ) 
    719                       ENDDO 
    720                    ENDIF 
     739                  IF (lwp) THEN 
     740                     WRITE(numout,*) 'tra_bias : bias weights' 
     741                     WRITE(numout,*) '~~~~~~~~~~~~' 
     742                     WRITE(numout,* ) "IPC - proportion of increments + historical pcbias applied ",zfrac 
     743                  ENDIF 
    721744 
    722745                 ENDIF 
     
    733756                           tbias_asm_out(:,:,jk) =  ztfrac * tbias_asm(:,:,jk)  
    734757                           sbias_asm_out(:,:,jk) =  ztfrac * sbias_asm(:,:,jk)  
    735                          END DO 
     758                        END DO 
     759 
     760                        IF ( ln_incpc ) THEN 
     761                           DO jk = 1, jpkm1 
     762                              tbias_asm_stscale_out(:,:,jk) =  tbias_asm_stscale(:,:,jk) * zfrac 
     763                              sbias_asm_stscale_out(:,:,jk) =  sbias_asm_stscale(:,:,jk) * zfrac 
     764                           ENDDO 
     765                        ENDIF 
     766 
    736767                     ENDIF 
     768 
    737769                  ENDIF 
    738770 
     
    764796                   
    765797                   DO jk = 1, jpkm1 
    766                       tbias_i(:,:,jk) = - ( tbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) 
    767                       sbias_i(:,:,jk) = - ( sbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) 
     798                      tbias_i(:,:,jk) = ( tbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) 
     799                      sbias_i(:,:,jk) = ( sbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) 
    768800                   ENDDO 
    769801 
    770802                   IF ( kt == nn_bias_itwrt ) THEN 
    771                       DO jk = 1, jpk 
     803                      DO jk = 1, jpkm1 
    772804                         tbias_asm_stscale_out(:,:,jk) = ( tbias_asm_stscale(:,:,jk) * zfrac1 ) 
    773805                         sbias_asm_stscale_out(:,:,jk) = ( sbias_asm_stscale(:,:,jk) * zfrac1 ) 
  • branches/UKMO/dev_r5518_pcbias_ipc/NEMOGCM/NEMO/OPA_SRC/step.F90

    r6411 r7284  
    3333   USE step_oce         ! time stepping definition modules 
    3434   USE iom 
    35  
    3635   IMPLICIT NONE 
    3736   PRIVATE 
Note: See TracChangeset for help on using the changeset viewer.