Class wa_deriv_module
In: src/wa_deriv_module.f90

Methods

Included Modules

w_base_module wa_base_module w_deriv_module

Public Instance methods

wa_DLon_wa((nm+1)*(nm+1),size(wa_data,2)) :real(8)
wa_data(:,:) :real(8), intent(in)

————— 微分計算 ——————

[Source]



    function wa_DLon_wa(wa_data)        ! スペクトルに作用する経度微分 ∂/∂λ
      real(8), intent(in)  :: wa_data(:,:)
      real(8)              :: wa_DLon_wa((nm+1)*(nm+1),size(wa_data,2))

      integer :: l,k

      do k=1,size(wa_data,2)
         do l=1,(nm+1)*(nm+1)
            wa_DLon_wa(irm(l,1),k) = irm(l,2)*wa_data(l,k)
         enddo
      enddo
    end function wa_DLon_wa
wa_DivLambda_xya((nm+1)*(nm+1),size(xya_data,3)) :real(8)
xya_data(:,:,:) :real(8), intent(in)

————— 微分計算 (λ,μ座標系用) ——————

[Source]



    function wa_DivLambda_xya(xya_data)   ! 格子に作用する発散型経度微分 
                                          ! 1/(1-μ^2)・∂/∂λ

      real(8), intent(in)  :: xya_data(:,:,:)
      real(8)              :: wa_DivLambda_xya((nm+1)*(nm+1),size(xya_data,3))

      wa_DivLambda_xya = wa_xya(xya_data,ipow=2,iflag=-1)
    end function wa_DivLambda_xya
wa_DivLon_xya((nm+1)*(nm+1),size(xya_data,3)) :real(8)
xya_data(:,:,:) :real(8), intent(in)

————— 微分計算 ——————

[Source]



    function wa_DivLon_xya(xya_data)   ! 格子に作用する発散型経度微分 
                                  ! 1/cosφ・∂/∂λ

      real(8), intent(in)  :: xya_data(:,:,:)
      real(8)              :: wa_DivLon_xya((nm+1)*(nm+1),size(xya_data,3))

      wa_DivLon_xya = wa_xya(xya_data,ipow=1,iflag=-1)
    end function wa_DivLon_xya
wa_Div_xya_xya((nm+1)*(nm+1),size(xya_u,3)) :real(8)
xya_u(:,:,:) :real(8), intent(in)
: ベクトル経度成分
xya_v(:,:,:) :real(8), intent(in)
: ベクトル緯度成分

————— 微分計算 ——————

[Source]



    function wa_Div_xya_xya(xya_u,xya_v)     ! 格子に作用する発散
      real(8), intent(in)  :: xya_u(:,:,:)   ! ベクトル経度成分
      real(8), intent(in)  :: xya_v(:,:,:)   ! ベクトル緯度成分
      real(8)              :: wa_Div_xya_xya((nm+1)*(nm+1),size(xya_u,3))

      wa_Div_xya_xya = wa_DivLon_xya(xya_u) + wa_DivLat_xya(xya_v)
    end function wa_Div_xya_xya
wa_Jacobian_wa_wa((nm+1)*(nm+1),size(wa_a,2)) :real(8)
wa_a(:,:) :real(8), intent(in)
wa_b(:,:) :real(8), intent(in)

————— 微分計算 ——————

[Source]



    function wa_Jacobian_wa_wa(wa_a,wa_b)  ! スペクトルに作用するヤコビアン
                             ! J(f,g) = ∂f/∂λ・∂g/∂μ - ∂g/∂λ・∂f/∂μ
                             !        = ∂f/∂λ・1/cosφ・∂g/∂φ
                             !           - ∂g/∂λ・1/cosφ・∂f/∂φ

      real(8), intent(in) :: wa_a(:,:)
      real(8), intent(in) :: wa_b(:,:)
      real(8)             :: wa_Jacobian_wa_wa((nm+1)*(nm+1),size(wa_a,2))

      integer :: k

      do k=1,size(wa_a,2)
         wa_Jacobian_wa_wa(:,k) = w_Jacobian_w_w(wa_a(:,k),wa_b(:,k))
      end do
    end function wa_Jacobian_wa_wa
wa_data(:,:) :real(8), intent(in)

————— 微分計算 ——————

[Source]

    function wa_Lapla_wa(wa_data)       ! スペクトルに作用する Laplacian
      real(8), intent(in)  :: wa_data(:,:)
      real(8)              :: wa_lapla_wa((nm+1)*(nm+1),size(wa_data,2))

      integer :: l,k

      do k=1,size(wa_data,2)
         do l=1,(nm+1)*(nm+1)
            wa_Lapla_wa(l,k) = rn(l,1)*wa_data(l,k)
         enddo
      enddo
    end function wa_Lapla_wa
k_in :integer,intent(in)
: 最大データ数(層数)を記憶

————— 初期化 ——————

[Source]

    subroutine wa_deriv_Initial(k_in)

      integer,intent(in) :: k_in              ! 最大データ数(層数)を記憶

      call wa_base_Initial(k_in)

    end subroutine wa_deriv_Initial
xya_GradLambda_wa(im,jm,size(wa_data,2)) :real(8)
wa_data(:,:) :real(8), intent(in)
: ∂/∂λ

————— 微分計算 (λ,μ座標系用) ——————

[Source]

    function xya_GradLambda_wa(wa_data) ! スペクトルに作用する勾配型経度微分
                                        ! ∂/∂λ
      real(8), intent(in)  :: wa_data(:,:)
      real(8)              :: xya_GradLambda_wa(im,jm,size(wa_data,2))

      xya_GradLambda_wa = xya_wa(wa_data,ipow=0,iflag=-1)
    end function xya_GradLambda_wa
xya_GradLon_wa(im,jm,size(wa_data,2)) :real(8)
wa_data(:,:) :real(8), intent(in)
: 1/cosφ・∂/∂λ

————— 微分計算 ——————

[Source]



    function xya_GradLon_wa(wa_data) ! スペクトルに作用する勾配型経度微分
                                ! 1/cosφ・∂/∂λ
      real(8), intent(in)  :: wa_data(:,:)
      real(8)              :: xya_GradLon_wa(im,jm,size(wa_data,2))

      xya_GradLon_wa = xya_wa(wa_data,ipow=1,iflag=-1)
    end function xya_GradLon_wa

[Validate]