⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scm0.f90

📁 CCSM Research Tools: Community Atmosphere Model (CAM)
💻 F90
字号:
#include <misc.h>#include <params.h>subroutine scm0(n       ,deli    ,df1     ,df2     )!----------------------------------------------------------------------- ! ! Purpose: ! Apply SCM0 limiter to derivative estimates.! See Rasch and Williamson (1990)! ! Method: ! ! Author: J. Olson! !-----------------------------------------------------------------------!! $Id: scm0.F90,v 1.1.2.1 2002/04/22 19:09:38 erik Exp $! $Author: erik $!!-----------------------------------------------------------------------  use precision  use pmgrid  implicit none!------------------------------Arguments--------------------------------  integer , intent(in)    :: n         ! length of vectors  real(r8), intent(in)    :: deli(n)   ! discrete derivative  real(r8), intent(inout) :: df1(n)    ! limited left -edge derivative  real(r8), intent(inout) :: df2(n)    ! limited right-edge derivative!! n      Dimension of input arrays.! deli   deli(i) is the discrete derivative on interval i, i.e.,!        deli(i) = ( f(i+1) - f(i) )/( x(i+1) - x(i) ).! df1    df1(i) is the limited derivative at the left  edge of interval! df2    df2(i) is the limited derivative at the right edge of interval!-----------------------------------------------------------------------!---------------------------Local variables-----------------------------  integer i                 ! index  real(r8) fac              ! factor applied in limiter  real(r8) tmp1             ! derivative factor  real(r8) tmp2             ! abs(tmp1)!-----------------------------------------------------------------------!  fac = 3.*(1. - 10.*epsilon(fac))  do i = 1,n     tmp1 = fac*deli(i)     tmp2 = abs( tmp1 )     if( deli(i)*df1(i)   <= 0.0  ) df1(i) = 0.     if( deli(i)*df2(i)   <= 0.0  ) df2(i) = 0.     if( abs(    df1(i) ) >  tmp2 ) df1(i) = tmp1     if( abs(    df2(i) ) >  tmp2 ) df2(i) = tmp1  end do  returnend subroutine scm0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -