?? fdtd_gitter.f90
字號(hào):
! fdtd_gitter.f90! ! Gitterstruktur und Gitterinitialisierung!! Copyright (C) 2007 Paul Panserrieu, < peutetre@cs.tu-berlin.de >!! This program is free software: you can redistribute it and/or modify! it under the terms of the GNU General Public License as published by! the Free Software Foundation, either version 3 of the License.! ! last modified: 23-08-2007 02:41:20 PM CESTMODULE fdtd_gitterIMPLICIT NONEDOUBLE PRECISION, PARAMETER :: PI = 3.14159265358979323846d0 DOUBLE PRECISION, PARAMETER :: MUE = 1.25663706143591729538d-6 DOUBLE PRECISION, PARAMETER :: EPS = 8.85418781762038985053d-12DOUBLE PRECISION, PARAMETER :: C = 299792458.0d0TYPE gitter DOUBLE PRECISION, POINTER, DIMENSION(:,:,:,:) :: E, H DOUBLE PRECISION :: MAT_MUE, MAT_EPS ! low, yee high and grid high INTEGER :: nxl, nxyh, nxgh INTEGER :: nyl, nyyh, nygh INTEGER :: nzl, nzyh, nzgh DOUBLE PRECISION :: dx, dy, dz, dt DOUBLE PRECISION :: mue, eps CHARACTER(5) :: idEND TYPE gitterTYPE dipol DOUBLE PRECISION, DIMENSION(1:3) :: E DOUBLE PRECISION :: omega, phi INTEGER :: px, py, pzEND TYPE dipolCONTAINS SUBROUTINE init_grid(g) TYPE(gitter), INTENT(INOUT) :: g ALLOCATE( g%E(g%nxl:g%nxgh, g%nyl:g%nygh, g%nzl:g%nzgh, 1:3) & , g%H(g%nxl:g%nxgh, g%nyl:g%nygh, g%nzl:g%nzgh, 1:3) & ) g%E(g%nxl:g%nxgh, g%nyl:g%nygh, g%nzl:g%nzgh, 1:3) = 0.0d0 g%H(g%nxl:g%nxgh, g%nyl:g%nygh, g%nzl:g%nzgh, 1:3) = 0.0d0END SUBROUTINE init_gridSUBROUTINE set_grid(g, S, frequenz, N_lambda, lambda, n, h, dipol_type, sim_id) TYPE(gitter), INTENT(INOUT) :: g DOUBLE PRECISION, INTENT(IN) :: frequenz DOUBLE PRECISION, INTENT(INOUT) :: lambda DOUBLE PRECISION, INTENT(INOUT) :: h DOUBLE PRECISION, INTENT(IN) :: S DOUBLE PRECISION, INTENT(IN) :: N_lambda INTEGER, INTENT(IN) :: n INTEGER, INTENT(IN) :: dipol_type CHARACTER(5), INTENT(IN) :: sim_id lambda = C / (frequenz) h = lambda / N_lambda g%mue=MUE; g%eps=EPS ! Initialisierung der min. und max. Zellennummern g%nxl= - n/2; g%nyl= - n/2; g%nzl= - n/2 ! Unterscheidung zwischen high grid und high yee g%nxgh= n/2; g%nygh= n/2; g%nzgh= n/2 g%nxyh= n/2 - 1; g%nyyh= n/2 - 1; g%nzyh= n/2 - 1 g%dx=h; g%dy=h; g%dz=h; g%dt=S*h/C g%MAT_MUE = g%dt/(g%mue*h) g%MAT_EPS = g%dt/(g%eps*h) g%id = sim_id CALL init_grid(g)END SUBROUTINE set_gridEND MODULE fdtd_gitter
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -