Class | wa_base_module |
In: |
src/wa_base_module.f90
|
k_in : | integer,intent(in)
|
————— 初期化 ——————
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
| ||
iflag : | integer, intent(in), optional
|
————— 基本変換 ——————
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