⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fdtd_gitter.f90

📁 Sfdtd Simple finite-difference time-domain
💻 F90
字号:
! 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 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -