Class wa_base_module
In: src/wa_base_module.f90

Methods

Included Modules

dc_message w_base_module

Public Instance methods

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

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

[Source]

    subroutine wa_base_initial(k_in)

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

      integer :: iw

      km = k_in

      allocate(ipk(km,((nm+1)/2+nm+1)*2))      ! 変換用配列(多層用)
      allocate(pk(km,((nm+1)/2+nm+1)*jm))      ! 変換用配列(多層用)
      allocate(rk(km,((nm+1)/2*2+3)*(nm/2+1))) ! 変換用配列(多層用)

      allocate(q(km*((nm+1)/2+nm+1)*jm))       ! 作業配列(多層用)
      iw=km*(im+3*(nm+1))*jm
      allocate(ws(iw),ww(iw))                  ! 作業用配列(多層用)

      call snkini(nm,jm,km,ip,p,r,ipk,pk,rk)

    end subroutine wa_base_Initial
xya_wa(im,jm,size(wa_data,2)) :real(8)
: 格子点
wa_data(:,:) :real(8), intent(in)
: スペクトル
ipow :integer, intent(in), optional
: 作用させる 1/cosφ の次数
iflag :integer, intent(in), optional
: 変換の種類

————— 基本変換 ——————

[Source]


    function xya_wa(wa_data,ipow,iflag)    ! 球面調和関数スペクトル -> 格子点
      real(8), intent(in)   :: wa_data(:,:)                    ! スペクトル
      real(8)               :: xya_wa(im,jm,size(wa_data,2))   ! 格子点
      integer, intent(in), optional  :: ipow      ! 作用させる 1/cosφ の次数
      integer, intent(in), optional  :: iflag     ! 変換の種類

      integer, parameter  :: ipow_default  = 0
      integer, parameter  :: iflag_default = 0

      integer ipval, ifval
      integer k

      if (present(ipow)) then
         ipval = ipow
      else
         ipval = ipow_default
      endif

      if (present(iflag)) then
         ifval = iflag
      else
         ifval = iflag_default
      endif

      k= size(wa_data,2)
      if  ( k > km ) then
         call MessageNotify('E','xya_wa','Size of 3rd dimension invalid.')
      else
         call snts2g(nm,im,im,jm,jm,size(wa_data,2),wa_data,xya_wa,              it,t,y,ipk(1:k,:),pk(1:k,:),rk(1:k,:),ia,a,q,ws,ww,ipval,ifval)
      endif

    end function xya_wa

[Validate]