Class max_min
In: max_min.f90

代数計算モジュール 1

Methods

Public Instance methods

Subroutine :
var(:) :real, intent(in)
: 最大値探索配列
mamn :integer, intent(inout)
: 配列内の最大値に該当する要素番号
mamv :real, intent(inout)
: 配列内の最大値

1 次元配列用最大値, 該当配列要素番号取得ルーチン

[Source]

subroutine max_val_1d(var, mamn, mamv)  ! 1 次元配列用最大値, 該当配列要素番号取得ルーチン
  implicit none
  real, intent(in) :: var(:)  ! 最大値探索配列
  integer, intent(inout) :: mamn  ! 配列内の最大値に該当する要素番号
  real, intent(inout) :: mamv  ! 配列内の最大値
  integer :: nx  ! 配列個数(size 関数で自動計算)
  integer :: i  ! イタレーション用添字

  nx=size(var)

  mamv=var(1)
  mamn=1

  do i=2,nx
     if(var(i)>mamv)then
        mamv=var(i)
        mamn=i
     end if
  end do

end subroutine max_val_1d
Subroutine :
var(:,:) :real, intent(in)
: 2 次元最大値探索配列
mamnx :integer, intent(inout)
: 配列内の最大値に該当する第 1 配列要素番号
mamny :integer, intent(inout)
: 配列内の最大値に該当する第 2 配列要素番号
mamv :real, intent(inout)
: 配列内の最大値

2 次元配列用最大値, 該当配列要素番号取得ルーチン

[Source]

subroutine max_val_2d(var, mamnx, mamny, mamv)  ! 2 次元配列用最大値, 該当配列要素番号取得ルーチン
  implicit none
  real, intent(in) :: var(:,:)  ! 2 次元最大値探索配列
  integer, intent(inout) :: mamnx  ! 配列内の最大値に該当する第 1 配列要素番号
  integer, intent(inout) :: mamny  ! 配列内の最大値に該当する第 2 配列要素番号
  real, intent(inout) :: mamv  ! 配列内の最大値
  integer :: nx  ! 第 1 要素の配列個数(size 関数で自動計算)
  integer :: ny  ! 第 2 要素の配列個数(size 関数で自動計算)
  integer :: j  ! イタレーション用添字
  real :: tmp(size(var,2))  ! 作業用配列
  integer :: tmp_num(size(var,2))  ! 作業用配列

  nx=size(var,1)
  ny=size(var,2)

  do j=1,ny
     call max_val_1d(var(:,j),tmp_num(j),tmp(j))
  end do

  call max_val_1d(tmp,mamny,mamv)
  mamnx=tmp_num(mamny)

end subroutine max_val_2d
Subroutine :
var(:,:,:) :real, intent(in)
: 3 次元最大値探索配列
mamnx :integer, intent(inout)
: 配列内の最大値に該当する第 1 配列要素番号
mamny :integer, intent(inout)
: 配列内の最大値に該当する第 2 配列要素番号
mamnz :integer, intent(inout)
: 配列内の最大値に該当する第 3 配列要素番号
mamv :real, intent(inout)
: 配列内の最大値

3 次元配列用最大値, 該当配列要素番号取得ルーチン

[Source]

subroutine max_val_3d(var, mamnx, mamny, mamnz, mamv)  ! 3 次元配列用最大値, 該当配列要素番号取得ルーチン
  implicit none
  real, intent(in) :: var(:,:,:)  ! 3 次元最大値探索配列
  integer, intent(inout) :: mamnx  ! 配列内の最大値に該当する第 1 配列要素番号
  integer, intent(inout) :: mamny  ! 配列内の最大値に該当する第 2 配列要素番号
  integer, intent(inout) :: mamnz  ! 配列内の最大値に該当する第 3 配列要素番号
  real, intent(inout) :: mamv  ! 配列内の最大値
  integer :: nx  ! 第 1 要素の配列個数(size 関数で自動計算)
  integer :: ny  ! 第 2 要素の配列個数(size 関数で自動計算)
  integer :: nz  ! 第 3 要素の配列個数(size 関数で自動計算)
  integer :: j  ! イタレーション用添字
  real :: tmp(size(var,3))  ! 作業用配列
  integer :: tmp_num1(size(var,3))  ! 作業用配列
  integer :: tmp_num2(size(var,3))  ! 作業用配列

  nx=size(var,1)
  ny=size(var,2)
  nz=size(var,3)

  do j=1,nz
     call max_val_2d(var(:,:,j),tmp_num1(j),tmp_num2(j),tmp(j))
  end do

  call max_val_1d(tmp,mamnz,mamv)
  mamnx=tmp_num1(mamnz)
  mamny=tmp_num2(mamnz)

end subroutine max_val_3d
Subroutine :
var(:) :real, intent(in)
: 最小値探索配列
mimn :integer, intent(inout)
: 配列内の最小値に該当する要素番号
mimv :real, intent(inout)
: 配列内の最小値

[Source]

subroutine min_val_1d(var, mimn, mimv)
  implicit none
  real, intent(in) :: var(:)  ! 最小値探索配列
  integer, intent(inout) :: mimn  ! 配列内の最小値に該当する要素番号
  real, intent(inout) :: mimv  ! 配列内の最小値
  integer :: nx  ! 配列個数(size 関数で自動計算)
  integer :: i  ! イタレーション用添字

  nx=size(var)

  mimv=var(1)
  mimn=1

  do i=2,nx
     if(var(i)<mimv)then
        mimv=var(i)
        mimn=i
     end if
  end do

end subroutine min_val_1d
Subroutine :
var(:,:) :real, intent(in)
: 2 次元最小値探索配列
mimnx :integer, intent(inout)
: 配列内の最小値に該当する第 1 配列要素番号
mimny :integer, intent(inout)
: 配列内の最小値に該当する第 2 配列要素番号
mimv :real, intent(inout)
: 配列内の最小値

2 次元配列用最小値, 該当配列要素番号取得ルーチン

[Source]

subroutine min_val_2d(var, mimnx, mimny, mimv)  ! 2 次元配列用最小値, 該当配列要素番号取得ルーチン
  implicit none
  real, intent(in) :: var(:,:)  ! 2 次元最小値探索配列
  integer, intent(inout) :: mimnx  ! 配列内の最小値に該当する第 1 配列要素番号
  integer, intent(inout) :: mimny  ! 配列内の最小値に該当する第 2 配列要素番号
  real, intent(inout) :: mimv  ! 配列内の最小値
  integer :: nx  ! 第 1 要素の配列個数(size 関数で自動計算)
  integer :: ny  ! 第 2 要素の配列個数(size 関数で自動計算)
  integer :: j  ! イタレーション用添字
  real :: tmp(size(var,2))  ! 作業用配列
  integer :: tmp_num(size(var,2))  ! 作業用配列

  nx=size(var,1)
  ny=size(var,2)

  do j=1,ny
     call min_val_1d(var(:,j),tmp_num(j),tmp(j))
  end do

  call min_val_1d(tmp,mimny,mimv)
  mimnx=tmp_num(mimny)

end subroutine min_val_2d
Subroutine :
var(:,:,:) :real, intent(in)
: 3 次元最小値探索配列
mimnx :integer, intent(inout)
: 配列内の最小値に該当する第 1 配列要素番号
mimny :integer, intent(inout)
: 配列内の最小値に該当する第 2 配列要素番号
mimnz :integer, intent(inout)
: 配列内の最小値に該当する第 3 配列要素番号
mimv :real, intent(inout)
: 配列内の最小値

3 次元配列用最小値, 該当配列要素番号取得ルーチン

[Source]

subroutine min_val_3d(var, mimnx, mimny, mimnz, mimv)  ! 3 次元配列用最小値, 該当配列要素番号取得ルーチン
  implicit none
  real, intent(in) :: var(:,:,:)  ! 3 次元最小値探索配列
  integer, intent(inout) :: mimnx  ! 配列内の最小値に該当する第 1 配列要素番号
  integer, intent(inout) :: mimny  ! 配列内の最小値に該当する第 2 配列要素番号
  integer, intent(inout) :: mimnz  ! 配列内の最小値に該当する第 3 配列要素番号
  real, intent(inout) :: mimv  ! 配列内の最小値
  integer :: nx  ! 第 1 要素の配列個数(size 関数で自動計算)
  integer :: ny  ! 第 2 要素の配列個数(size 関数で自動計算)
  integer :: nz  ! 第 3 要素の配列個数(size 関数で自動計算)
  integer :: j  ! イタレーション用添字
  real :: tmp(size(var,3))  ! 作業用配列
  integer :: tmp_num1(size(var,3))  ! 作業用配列
  integer :: tmp_num2(size(var,3))  ! 作業用配列

  nx=size(var,1)
  ny=size(var,2)
  nz=size(var,3)

  do j=1,nz
     call min_val_2d(var(:,:,j),tmp_num1(j),tmp_num2(j),tmp(j))
  end do

  call min_val_1d(tmp,mimnz,mimv)
  mimnx=tmp_num1(mimnz)
  mimny=tmp_num2(mimnz)

end subroutine min_val_3d