update.f90

来自「Sfdtd Simple finite-difference time-doma」· F90 代码 · 共 122 行

F90
122
字号
! update.f90! ! Update Regeln fuer das FDTD Gitter!!    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: 18-07-2007 01:25:26 PM CESTMODULE updateUSE fdtd_gitter IMPLICIT NONECONTAINSSUBROUTINE h_update(g)  TYPE(gitter), INTENT(INOUT)      :: g  INTEGER                          :: ix, iy, iz  DO iz=g%nzl, g%nzyh, 1    DO iy=g%nyl, g%nyyh, 1      DO ix=g%nxl+1, g%nxyh, 1        g%H(ix, iy, iz, 1) = g%H(ix, iy, iz, 1)                           &                            - g%MAT_MUE                                   &                              * ( g%E(ix  , iy  , iz  , 2)                &                                + g%E(ix  , iy+1, iz  , 3)                &                                - g%E(ix  , iy  , iz+1, 2)                &                                - g%E(ix  , iy  , iz  , 3)                &                                )      ENDDO    ENDDO  ENDDO  DO iz=g%nzl, g%nzyh, 1    DO iy=g%nyl+1, g%nyyh, 1      DO ix=g%nxl, g%nxyh, 1        g%H(ix, iy, iz, 2) = g%H(ix, iy, iz, 2)                             &                              - g%MAT_MUE                                   &                                * ( g%E(ix  , iy  , iz  , 3)                &                                  + g%E(ix  , iy  , iz+1, 1)                &                                  - g%E(ix+1, iy  , iz  , 3)                &                                  - g%E(ix  , iy  , iz  , 1)                &                                  )      ENDDO    ENDDO  ENDDO  DO iz=g%nzl+1, g%nzyh, 1    DO iy=g%nyl, g%nyyh, 1      DO ix=g%nxl, g%nxyh, 1        g%H(ix, iy, iz, 3) = g%H(ix, iy, iz, 3)                             &                              - g%MAT_MUE                                   &                                * ( g%E(ix  , iy  , iz  , 1)                &                                  + g%E(ix+1, iy  , iz  , 2)                &                                  - g%E(ix  , iy+1, iz  , 1)                &                                  - g%E(ix  , iy  , iz  , 2)                &                                  )      ENDDO    ENDDO  ENDDOEND SUBROUTINE h_updateSUBROUTINE e_update(g)  TYPE(gitter), INTENT(INOUT)      :: g  INTEGER                          :: ix, iy, iz  DO iz=g%nzl+1, g%nzyh, 1    DO iy=g%nyl+1, g%nyyh, 1      DO ix=g%nxl, g%nxyh, 1        g%E(ix, iy, iz, 1) = g%E(ix, iy, iz, 1)                             &                             + g%MAT_EPS                                    &                               * ( g%H(ix  , iy  , iz  , 3)                 &                                 - g%H(ix  , iy  , iz  , 2)                 &                                 - g%H(ix  , iy-1, iz  , 3)                 &                                 + g%H(ix  , iy  , iz-1, 2)                 &                                 )      ENDDO    ENDDO  ENDDO  DO iz=g%nzl+1, g%nzyh, 1    DO iy=g%nyl, g%nyyh, 1      DO ix=g%nxl+1, g%nxyh, 1        g%E(ix, iy, iz, 2)= g%E(ix, iy, iz, 2)                              &                             + g%MAT_EPS                                    &                               * ( g%H(ix  , iy  , iz  , 1)                 &                                 - g%H(ix  , iy  , iz  , 3)                 &                                 - g%H(ix  , iy  , iz-1, 1)                 &                                 + g%H(ix-1, iy  , iz  , 3)                 &                                 )      ENDDO    ENDDO  ENDDO  DO iz=g%nzl, g%nzyh, 1    DO iy=g%nyl+1, g%nyyh, 1      DO ix=g%nxl+1, g%nxyh, 1        g%E(ix, iy, iz, 3)= g%E(ix, iy, iz, 3)                              &                             + g%MAT_EPS                                    &                               * ( g%H(ix  , iy  , iz  , 2)                 &                                 - g%H(ix  , iy  , iz  , 1)                 &                                 - g%H(ix-1, iy  , iz  , 2)                 &                                 + g%H(ix  , iy-1, iz  , 1)                 &                                 )              ENDDO    ENDDO  ENDDOEND SUBROUTINE e_updateEND MODULE update

⌨️ 快捷键说明

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