Class | max_min |
In: |
max_min.f90
|
代数計算モジュール 1
Subroutine : | |||
var(:) : | real, intent(in)
| ||
mamn : | integer, intent(inout)
| ||
mamv : | real, intent(inout)
|
1 次元配列用最大値, 該当配列要素番号取得ルーチン
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)
| ||
mamnx : | integer, intent(inout)
| ||
mamny : | integer, intent(inout)
| ||
mamv : | real, intent(inout)
|
2 次元配列用最大値, 該当配列要素番号取得ルーチン
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)
| ||
mamnx : | integer, intent(inout)
| ||
mamny : | integer, intent(inout)
| ||
mamnz : | integer, intent(inout)
| ||
mamv : | real, intent(inout)
|
3 次元配列用最大値, 該当配列要素番号取得ルーチン
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)
|
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)
| ||
mimnx : | integer, intent(inout)
| ||
mimny : | integer, intent(inout)
| ||
mimv : | real, intent(inout)
|
2 次元配列用最小値, 該当配列要素番号取得ルーチン
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)
| ||
mimnx : | integer, intent(inout)
| ||
mimny : | integer, intent(inout)
| ||
mimnz : | integer, intent(inout)
| ||
mimv : | real, intent(inout)
|
3 次元配列用最小値, 該当配列要素番号取得ルーチン
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