!********************************************************************** ! モジュール !********************************************************************** !====================================================================== ! 定数 !====================================================================== module mod_consts real(8),parameter :: eps=1.0d-9 real(8),parameter :: pi=3.141592653589793d0 ! 円周率 real(8),parameter :: velocity_of_light=2.998d8 ! 光速 real(8),parameter :: z0=120.0d0*pi real(8),parameter :: y0=1.0d0/(120.0d0*pi) complex(8),parameter :: zj=dcmplx(0.0d0,1.0d0) end module !====================================================================== ! FEM !====================================================================== module mod_fem !-------- 要素に関する情報のデータ型 -------- type element integer :: npoly ! この要素は何角形か?(三角=3または四角=4) integer :: edge(4) ! ローカルエッジ → グローバルエッジ integer :: node(4) ! ローカルノード → グローバルノード integer :: orient(4) ! ローカルエッジの向き end type element ! **** グローバルエッジ情報のデータ型 **** type globedge integer :: elem(2) ! 隣接する要素の番号 integer :: edge(2) ! 隣接する要素のローカルエッジ番号 integer :: node(2) ! 始点、終点ノード end type ! 配列を固定でとるために最大数を指定する integer,parameter :: mx=20 ! x 方向最大分割数 integer,parameter :: my=10 ! y 方向最大分割数 integer,parameter :: melem=2*mx*my ! 最大要素数 integer,parameter :: medge=mx*(2*my+1)+(mx+1)*my ! 最大エッジ数 integer,parameter :: mnode=(mx+1)*(my+1) ! 最大ノード数 type (element) elem(melem) type (globedge) :: gedge(medge) integer :: boundary_edge(medge),non_boundary_edge(medge) real(8) :: gn2x(mnode),gn2y(mnode) real(8) :: sizex,sizey integer :: nx,ny,nelem,nedge,nnode,n_boundary,n_non_boundary real(8) :: syst2(medge,medge),sysu2(medge,medge),& syst(medge,medge),sysu(medge,medge) real(8) :: eigval(medge),eigvec(medge,medge) ! 固有値問題の解 end module ! ! End of File !