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

📄 matdata.f90

📁 三维FDTD,matlal编程,mur边界条件,平面波光源
💻 F90
📖 第 1 页 / 共 5 页
字号:
subroutine Get_Real4_0(filename,varname,var)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  real(kind=4), intent(out)  :: var

  character(len=len(filename)+4) :: flnm
  character(len=1) :: TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer(kind=4) :: matClose, matGetVariable
  
  integer(kind=4) :: mxGetPr
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  TrueAction = CheckAction(flnm,'r')
  if (TrueAction /= 'r') then
    write(*,'("Non-exist .mat file ",a)')flnm
    var = 0
    return
  endif
  
  ! --- Open .mat file for read
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Get variable 
  pa = matGetVariable(mp,varname)
  if (pa == 0) then
    write(*,'("Non-exist variable ",a)')varname
  else
    ! --- Copy pointer to data variable
    call mxCopyPtrToReal4(mxGetPr(pa),var,1)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Get_Real4_0


! --- real(kind=8) 
subroutine Get_Real8_0(filename,varname,var)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  real(kind=8), intent(out)  :: var

  character(len=len(filename)+4) :: flnm
  character(len=1) :: TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer(kind=4) :: matClose, matGetVariable
  
  integer(kind=4) :: mxGetPr
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  TrueAction = CheckAction(flnm,'r')
  if (TrueAction /= 'r') then
    write(*,'("Non-exist .mat file ",a)')flnm
    var = 0
    return
  endif
  
  ! --- Open .mat file for read
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Get variable 
  pa = matGetVariable(mp,varname)
  if (pa == 0) then
    write(*,'("Non-exist variable ",a)')varname
  else
    ! --- Copy pointer to data variable
    call mxCopyPtrToReal8(mxGetPr(pa),var,1)
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Get_Real8_0

! --- Integer(kind=2) 1-dimension
subroutine Get_Int2_1(filename,varname,var)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  integer(kind=2), dimension(:), intent(out)  :: var

  character(len=len(filename)+4) :: flnm
  character(len=1) :: TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer(kind=4) :: matClose, matGetVariable
  
  integer(kind=4) :: mxGetPr
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  TrueAction = CheckAction(flnm,'r')
  if (TrueAction /= 'r') then
    write(*,'("Non-exist .mat file ",a)')flnm
    var = 0
    return
  endif
  
  ! --- Open .mat file for read
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Get variable 
  pa = matGetVariable(mp,varname)
  if (pa == 0) then
    write(*,'("Non-exist variable ",a)')varname
  else
    ! --- Copy pointer to data variable
    call mxCopyPtrToInteger2(mxGetPr(pa),var,size(var))
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Get_Int2_1

! --- Integer(kind=4) 1-dimension
subroutine Get_Int4_1(filename,varname,var)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  integer(kind=4), dimension(:), intent(out)  :: var

  character(len=len(filename)+4) :: flnm
  character(len=1) :: TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer(kind=4) :: matClose, matGetVariable
  
  integer(kind=4) :: mxGetPr
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  TrueAction = CheckAction(flnm,'r')
  if (TrueAction /= 'r') then
    write(*,'("Non-exist .mat file ",a)')flnm
    var = 0
    return
  endif
  
  ! --- Open .mat file for read
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Get variable 
  pa = matGetVariable(mp,varname)
  if (pa == 0) then
    write(*,'("Non-exist variable ",a)')varname
  else
    ! --- Copy pointer to data variable
    call mxCopyPtrToInteger4(mxGetPr(pa),var,size(var))
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Get_Int4_1

! --- real(kind=4) 1-dimension
subroutine Get_Real4_1(filename,varname,var)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  real(kind=4), dimension(:), intent(out)  :: var

  character(len=len(filename)+4) :: flnm
  character(len=1) :: TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer(kind=4) :: matClose, matGetVariable
  
  integer(kind=4) :: mxGetPr
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  TrueAction = CheckAction(flnm,'r')
  if (TrueAction /= 'r') then
    write(*,'("Non-exist .mat file ",a)')flnm
    var = 0
    return
  endif
  
  ! --- Open .mat file for read
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Get variable 
  pa = matGetVariable(mp,varname)
  if (pa == 0) then
    write(*,'("Non-exist variable ",a)')varname
  else
    ! --- Copy pointer to data variable
    call mxCopyPtrToReal4(mxGetPr(pa),var,size(var))
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Get_Real4_1

! --- real(kind=8) 1-dimension
subroutine Get_Real8_1(filename,varname,var)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  real(kind=8), dimension(:), intent(out)  :: var

  character(len=len(filename)+4) :: flnm
  character(len=1) :: TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer(kind=4) :: matClose, matGetVariable
  
  integer(kind=4) :: mxGetPr
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  TrueAction = CheckAction(flnm,'r')
  if (TrueAction /= 'r') then
    write(*,'("Non-exist .mat file ",a)')flnm
    var = 0
    return
  endif
  
  ! --- Open .mat file for read
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Get variable 
  pa = matGetVariable(mp,varname)
  if (pa == 0) then
    write(*,'("Non-exist variable ",a)')varname
  else
    ! --- Copy pointer to data variable
    call mxCopyPtrToReal8(mxGetPr(pa),var,size(var))
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Get_Real8_1

! --- Integer(kind=2) 2-dimension
subroutine Get_Int2_2(filename,varname,var)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  integer(kind=2), dimension(:,:), intent(out)  :: var

  character(len=len(filename)+4) :: flnm
  character(len=1) :: TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer(kind=4) :: matClose, matGetVariable
  
  integer(kind=4) :: mxGetPr
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  TrueAction = CheckAction(flnm,'r')
  if (TrueAction /= 'r') then
    write(*,'("Non-exist .mat file ",a)')flnm
    var = 0
    return
  endif
  
  ! --- Open .mat file for read
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Get variable 
  pa = matGetVariable(mp,varname)
  if (pa == 0) then
    write(*,'("Non-exist variable ",a)')varname
  else
    ! --- Copy pointer to data variable
    call mxCopyPtrToInteger2(mxGetPr(pa),var,size(var))
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Get_Int2_2

! --- Integer(kind=4) 2-dimension
subroutine Get_Int4_2(filename,varname,var)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  integer(kind=4), dimension(:,:), intent(out)  :: var

  character(len=len(filename)+4) :: flnm
  character(len=1) :: TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer(kind=4) :: matClose, matGetVariable
  
  integer(kind=4) :: mxGetPr
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  TrueAction = CheckAction(flnm,'r')
  if (TrueAction /= 'r') then
    write(*,'("Non-exist .mat file ",a)')flnm
    var = 0
    return
  endif
  
  ! --- Open .mat file for read
  mp = matOpen(trim(flnm),TrueAction)
  if (mp == 0) then
    write(*,'("Fail to open .mat file ",a)')trim(flnm)
    return
  endif
  
  ! --- Get variable 
  pa = matGetVariable(mp,varname)
  if (pa == 0) then
    write(*,'("Non-exist variable ",a)')varname
  else
    ! --- Copy pointer to data variable
    call mxCopyPtrToInteger4(mxGetPr(pa),var,size(var))
  endif
  sta = matClose(mp)  
  if (sta /= 0) then    
    write(*,'("Fail to close .mat file ",a)')trim(flnm)
  endif
  ! --- DestroyArray, Clean Memory
  call mxDestroyArray(pa)
end subroutine Get_Int4_2

! --- real(kind=4) 2-dimension
subroutine Get_Real4_2(filename,varname,var)
  character(len=*), intent(in) :: filename
  character(len=*), intent(in) :: varname
  real(kind=4), dimension(:,:), intent(out)  :: var

  character(len=len(filename)+4) :: flnm
  character(len=1) :: TrueAction
  
  ! --- replace integer by integer(kind=8) on DEC alpha 64-bit platform
  integer(kind=4) :: matOpen
  integer(kind=4) :: matClose, matGetVariable
  
  integer(kind=4) :: mxGetPr
  
  ! --- check file name with .mat extension
  flnm = CheckFileName(filename)
  ! --- check file I/O action
  TrueAction = CheckAction(flnm,'r')
  if (TrueAction /= 'r') then
    write(*,'("Non-exist .mat file ",a)')flnm
    var = 0
    return
  endif
  
  ! --- Open .mat file for read
  mp = matOpen(trim(flnm),TrueAction)

⌨️ 快捷键说明

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