# Changeset 7284

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

Added corrections to the equations

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

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

 r7201 ztscale = 0.1_wp zwgt    = 1.0_wp zwgt    = 0.8_wp IF ( ln_bias_asm ) THEN zdecay = (1-ztscale)**(1/real(ztsday)) ! used in ipc zfrac1 = max(0.0_wp, zdecay**real(kt)) ! used in ipc zfrac1 = zdecay**real(kt) ! used in ipc IF ( zfrac1 <= 0.0 ) zfrac1 = 0.0_wp WRITE(numout,* ) "proportion of  historical pcbias applied ",t_asm_mem**(real(kt)/ztsday) ENDIF DO jk = 1, jpkm1 tbias(:,:,jk) = tbias(:,:,jk) +                            & &                ( t_asm_mem**(real(kt)/ztsday) * tbias_asm(:,:,jk)  +                    & IF (ln_incpc) THEN IF (lwp) THEN WRITE(numout,*) 'tra_bias : bias weights' WRITE(numout,*) '~~~~~~~~~~~~' WRITE(numout,* ) "IPC - proportion of  increment applied in pcbias ",ztfrac WRITE(numout,* ) "IPC - proportion of  historical pcbias applied ",zfrac1 ENDIF DO jk = 1, jpkm1 tbias_i(:,:,jk) =  ( t_bkginc(:,:,jk) * zwgt * ztfrac * (1.0 - fbcoef_stscale(:,:)) )         & &                - ( tbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) sbias_i(:,:,jk) =  ( s_bkginc(:,:,jk) * zwgt * ztfrac * (1.0 - fbcoef_stscale(:,:)) )         & &                - ( sbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) tbias_i(:,:,jk) =  ( t_bkginc(:,:,jk) * tmask(:,:,jk)* zwgt * ztfrac * (1.0 - fbcoef_stscale(:,:)) )         & &                + ( tbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) sbias_i(:,:,jk) =  ( s_bkginc(:,:,jk) * tmask(:,:,jk)* zwgt * ztfrac * (1.0 - fbcoef_stscale(:,:)) )         & &                + ( sbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) ENDDO ENDIF IF ( .not.ln_bsyncro ) THEN IF ( kt == nn_bias_itwrt ) THEN DO jk = 1, jpk tbias_asm_stscale_out(:,:,jk) = ( t_bkginc(:,:,jk) * zwgt * ztfrac ) + ( tbias_asm_stscale(:,:,jk) * zfrac1 ) sbias_asm_stscale_out(:,:,jk) = ( s_bkginc(:,:,jk) * zwgt * ztfrac ) + ( sbias_asm_stscale(:,:,jk) * zfrac1 ) ENDDO ENDIF ENDIF IF ( .not.ln_bsyncro ) THEN IF ( kt == nn_bias_itwrt ) THEN DO jk = 1, jpkm1 tbias_asm_out(:,:,jk) =  t_asm_mem**(real(kt)/ztsday) * tbias_asm(:,:,jk)  +       & &                     ztfrac * t_asm_upd * s_bkginc(:,:,jk) * tmask(:,:,jk) END DO IF ( ln_incpc) THEN DO jk = 1, jpkm1 tbias_asm_stscale_out(:,:,jk) = ( t_bkginc(:,:,jk) * tmask(:,:,jk) *  zwgt * ztfrac ) + ( tbias_asm_stscale(:,:,jk) * zfrac1 ) sbias_asm_stscale_out(:,:,jk) = ( s_bkginc(:,:,jk) * tmask(:,:,jk) *  zwgt * ztfrac ) + ( sbias_asm_stscale(:,:,jk) * zfrac1 ) ENDDO ENDIF ENDIF ENDIF END DO IF (ln_incpc) THEN DO jk = 1, jpkm1 tbias_asm_stscale(:,:,jk) = ( t_bkginc(:,:,jk) * tmask(:,:,jk) * zwgt * ztfrac ) + ( tbias_asm_stscale(:,:,jk) * zfrac1 ) sbias_asm_stscale(:,:,jk) = ( s_bkginc(:,:,jk) * tmask(:,:,jk) * zwgt * ztfrac ) + ( sbias_asm_stscale(:,:,jk) * zfrac1 ) ENDDO ENDIF ENDIF IF (ln_incpc) THEN zfrac  = max(0.0_wp, zdecay**real(kt-nitiaufin) ) zfrac  = zdecay**real(kt-nitiaufin) IF ( zfrac <= 0.0 ) zfrac = 0.0_wp DO jk = 1, jpkm1 tbias_i(:,:,jk) = ( t_bkginc(:,:,jk) * zwgt * zfrac * (1.0 - fbcoef_stscale(:,:)) )         & &                - ( tbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) sbias_i(:,:,jk) =  ( s_bkginc(:,:,jk) * zwgt * zfrac * (1.0 - fbcoef_stscale(:,:)) )         & &                - ( sbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) tbias_i(:,:,jk) =  ( tbias_asm_stscale(:,:,jk) * zfrac * (1.0 - fbcoef_stscale(:,:) ) sbias_i(:,:,jk) =  ( sbias_asm_stscale(:,:,jk) * zfrac * (1.0 - fbcoef_stscale(:,:) ) ENDDO IF ( kt == nn_bias_itwrt ) THEN DO jk = 1, jpk tbias_asm_stscale_out(:,:,jk) = ( t_bkginc(:,:,jk) * zwgt * zfrac ) + ( tbias_asm_stscale(:,:,jk) * zfrac1 ) sbias_asm_stscale_out(:,:,jk) = ( s_bkginc(:,:,jk) * zwgt * zfrac ) + ( sbias_asm_stscale(:,:,jk) * zfrac1 ) ENDDO ENDIF IF (lwp) THEN WRITE(numout,*) 'tra_bias : bias weights' WRITE(numout,*) '~~~~~~~~~~~~' WRITE(numout,* ) "IPC - proportion of increments + historical pcbias applied ",zfrac ENDIF ENDIF tbias_asm_out(:,:,jk) =  ztfrac * tbias_asm(:,:,jk) sbias_asm_out(:,:,jk) =  ztfrac * sbias_asm(:,:,jk) END DO END DO IF ( ln_incpc ) THEN DO jk = 1, jpkm1 tbias_asm_stscale_out(:,:,jk) =  tbias_asm_stscale(:,:,jk) * zfrac sbias_asm_stscale_out(:,:,jk) =  sbias_asm_stscale(:,:,jk) * zfrac ENDDO ENDIF ENDIF ENDIF DO jk = 1, jpkm1 tbias_i(:,:,jk) = - ( tbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) sbias_i(:,:,jk) = - ( sbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) tbias_i(:,:,jk) = ( tbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) sbias_i(:,:,jk) = ( sbias_asm_stscale(:,:,jk) * zfrac1 * (1.0 - fbcoef_stscale(:,:)) ) ENDDO IF ( kt == nn_bias_itwrt ) THEN DO jk = 1, jpk DO jk = 1, jpkm1 tbias_asm_stscale_out(:,:,jk) = ( tbias_asm_stscale(:,:,jk) * zfrac1 ) sbias_asm_stscale_out(:,:,jk) = ( sbias_asm_stscale(:,:,jk) * zfrac1 )
• ## branches/UKMO/dev_r5518_pcbias_ipc/NEMOGCM/NEMO/OPA_SRC/step.F90

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