marray_base_mod Module Reference

base class for mesh arrays More...

Data Types

interface  marray_base
 basic mesh array class More...
 
interface  selection_base
 type for selecting parts of an marray More...
 

Public Attributes

mesh indices

integer, save igmin
 
integer, save igmax
 1st dim More...
 
integer, save jgmin
 
integer, save jgmax
 2nd dim More...
 
integer, save kgmin
 
integer, save kgmax
 3rd dim More...
 
integer, save inum
 
integer, save jnum
 
integer, save knum
 array sizes More...
 
logical, save idx_init = .FALSE.
 init status More...
 

Methods

type(marray_base) function createmarray (m, n)
 constructor for mesh arrays More...
 
logical function init (this, m, n)
 basic initialization of mesh array class More...
 
subroutine, public initmeshproperties (igmin_, igmax_, jgmin_, jgmax_, kgmin_, kgmax_)
 sets global mesh properties More...
 
subroutine, public closemeshproperties
 unsets global mesh properties More...
 
logical function assignpointers (this)
 assign pointers of different shapes to the 1D data More...
 
real function, dimension(:,:,:), pointer remapbounds_0 (this, array)
 remap lower bounds in the first 3 dimensions of rank 0 mesh arrays More...
 
real function, dimension(:,:,:,:), pointer remapbounds_1 (this, array)
 remap lower bounds in the first 3 dimensions of rank 1 mesh arrays More...
 
real function, dimension(:,:,:,:,:), pointer remapbounds_2 (this, array)
 remap lower bounds in the first 3 dimensions of rank 2 mesh arrays More...
 
subroutine assignmarray_0 (this, ma)
 assigns one mesh array to another mesh array More...
 
subroutine assignmarray_1 (this, a)
 assign 1D fortran array to mesh array More...
 
subroutine assignmarray_2 (this, a)
 assign 2D fortran array to mesh array More...
 
subroutine assignmarray_3 (this, a)
 assign 3D fortran array to mesh array More...
 
subroutine assignmarray_4 (this, a)
 assign 4D fortran array to mesh array More...
 
subroutine assignmarray_5 (this, a)
 assign 5D fortran array to mesh array More...
 
pure logical function shapesmatch (this, that)
 
real function, dimension(size(this%data1d)) addmarray_0 (this, that)
 add 2 mesh arrays More...
 
real function, dimension(size(this%data1d)) addmarray_1 (this, a)
 add 1D fortran array and mesh array More...
 
real function, dimension(size(this%data2d, 1), size(this%data2d, 2)) addmarray_2 (this, a)
 add 2D fortran array and mesh array More...
 
real function, dimension(size(this%data3d, 1), size(this%data3d, 2), size(this%data3d, 3)) addmarray_3 (this, a)
 add 3D fortran array and mesh array More...
 
real function, dimension(size(this%data4d, 1), size(this%data4d, 2), size(this%data4d, 3), size(this%data4d, 4)) addmarray_4 (this, a)
 add 4D fortran array and mesh array More...
 
real function, dimension(size(this%data5d, 1), size(this%data5d, 2), size(this%data5d, 3), size(this%data5d, 4), size(this%data5d, 5)) addmarray_5 (this, a)
 add 5D fortran array and mesh array More...
 
real function, dimension(size(this%data1d)) multmarray_0 (this, that)
 multiply 2 mesh arrays More...
 
real function, dimension(size(this%data1d)) multmarray_1 (this, a)
 multiply 1D fortran array and mesh arrays More...
 
real function, dimension(size(this%data2d, 1), size(this%data2d, 2)) multmarray_2 (this, a)
 multiply 2D fortran array and mesh arrays More...
 
real function, dimension(size(this%data3d, 1), size(this%data3d, 2), size(this%data3d, 3)) multmarray_3 (this, a)
 multiply 3D fortran array and mesh arrays More...
 
real function, dimension(size(this%data4d, 1), size(this%data4d, 2), size(this%data4d, 3), size(this%data4d, 4)) multmarray_4 (this, a)
 multiply 4D fortran array and mesh arrays More...
 
real function, dimension(size(this%data5d, 1), size(this%data5d, 2), size(this%data5d, 3), size(this%data5d, 4), size(this%data5d, 5)) multmarray_5 (this, a)
 multiply 5D fortran array and mesh arrays More...
 
real function, dimension(size(this%data2d, dim=1), 3) crossproduct_0 (this, that)
 compute outer (vector) product of 2 marrays works only, if last dimension has size 3! More...
 
subroutine destroy (this, called_from_finalize)
 basic destructor of mesh arrays - this is called automatically if deallocate is invoked More...
 
subroutine finalize (this)
 
type(selection_base) function createselection (idx)
 
logical function init_selection (this, idx)
 basic initialization of selection More...
 
subroutine assignselection (this, sel)
 assigns one selection to another selection More...
 
subroutine cuboid (this, imin, imax, jmin, jmax, kmin, kmax)
 
subroutine everything (this)
 
subroutine destroy_selection (this)
 destructor of all selection classes More...
 
subroutine destructor_selection (this)
 actual destructor of selection_base More...
 

Detailed Description

base class for mesh arrays

Author
Tobias Illenseer

Function/Subroutine Documentation

◆ addmarray_0()

real function, dimension(size(this%data1d)) marray_base_mod::addmarray_0 ( class(marray_base), intent(in)  this,
class(marray_base), intent(in)  that 
)
private

add 2 mesh arrays

Definition at line 562 of file marray_base.f90.

Here is the caller graph for this function:

◆ addmarray_1()

real function, dimension(size(this%data1d)) marray_base_mod::addmarray_1 ( class(marray_base), intent(in)  this,
real, dimension(:), intent(in)  a 
)
private

add 1D fortran array and mesh array

Definition at line 592 of file marray_base.f90.

Here is the caller graph for this function:

◆ addmarray_2()

real function, dimension(size(this%data2d,1),size(this%data2d,2)) marray_base_mod::addmarray_2 ( class(marray_base), intent(in)  this,
real, dimension(size(this%data2d,1),size(this%data2d,2)), intent(in)  a 
)
private

add 2D fortran array and mesh array

Definition at line 615 of file marray_base.f90.

Here is the caller graph for this function:

◆ addmarray_3()

real function, dimension(size(this%data3d,1),size(this%data3d,2),size(this%data3d,3)) marray_base_mod::addmarray_3 ( class(marray_base), intent(in)  this,
real, dimension(:,:,:), intent(in)  a 
)
private

add 3D fortran array and mesh array

Definition at line 638 of file marray_base.f90.

Here is the caller graph for this function:

◆ addmarray_4()

real function, dimension(size(this%data4d,1),size(this%data4d,2),size(this%data4d,3), size(this%data4d,4)) marray_base_mod::addmarray_4 ( class(marray_base), intent(in)  this,
real, dimension(:,:,:,:), intent(in)  a 
)
private

add 4D fortran array and mesh array

Definition at line 661 of file marray_base.f90.

Here is the caller graph for this function:

◆ addmarray_5()

real function, dimension(size(this%data5d,1),size(this%data5d,2),size(this%data5d,3), size(this%data5d,4),size(this%data5d,5)) marray_base_mod::addmarray_5 ( class(marray_base), intent(in)  this,
real, dimension(:,:,:,:,:), intent(in)  a 
)
private

add 5D fortran array and mesh array

Definition at line 685 of file marray_base.f90.

Here is the caller graph for this function:

◆ assignmarray_0()

subroutine marray_base_mod::assignmarray_0 ( class(marray_base), intent(inout)  this,
class(marray_base), intent(in)  ma 
)
private

assigns one mesh array to another mesh array

Definition at line 345 of file marray_base.f90.

Here is the caller graph for this function:

◆ assignmarray_1()

subroutine marray_base_mod::assignmarray_1 ( class(marray_base), intent(inout)  this,
real, dimension(:), intent(in)  a 
)
private

assign 1D fortran array to mesh array

Definition at line 442 of file marray_base.f90.

Here is the caller graph for this function:

◆ assignmarray_2()

subroutine marray_base_mod::assignmarray_2 ( class(marray_base), intent(inout)  this,
real, dimension(:,:), intent(in)  a 
)
private

assign 2D fortran array to mesh array

Definition at line 464 of file marray_base.f90.

Here is the caller graph for this function:

◆ assignmarray_3()

subroutine marray_base_mod::assignmarray_3 ( class(marray_base), intent(inout)  this,
real, dimension(:,:,:), intent(in)  a 
)
private

assign 3D fortran array to mesh array

Definition at line 486 of file marray_base.f90.

Here is the caller graph for this function:

◆ assignmarray_4()

subroutine marray_base_mod::assignmarray_4 ( class(marray_base), intent(inout)  this,
real, dimension(:,:,:,:), intent(in)  a 
)
private

assign 4D fortran array to mesh array

Definition at line 508 of file marray_base.f90.

Here is the caller graph for this function:

◆ assignmarray_5()

subroutine marray_base_mod::assignmarray_5 ( class(marray_base), intent(inout)  this,
real, dimension(:,:,:,:,:), intent(in)  a 
)
private

assign 5D fortran array to mesh array

Definition at line 530 of file marray_base.f90.

Here is the caller graph for this function:

◆ assignpointers()

logical function marray_base_mod::assignpointers ( class(marray_base), intent(inout)  this)

assign pointers of different shapes to the 1D data

Definition at line 255 of file marray_base.f90.

◆ assignselection()

subroutine marray_base_mod::assignselection ( class(selection_base), intent(inout)  this,
class(selection_base), intent(in)  sel 
)
private

assigns one selection to another selection

Definition at line 985 of file marray_base.f90.

Here is the caller graph for this function:

◆ closemeshproperties()

subroutine, public marray_base_mod::closemeshproperties

unsets global mesh properties

This subroutine should be called only once in MeshClose.

Definition at line 246 of file marray_base.f90.

Here is the caller graph for this function:

◆ createmarray()

type(marray_base) function marray_base_mod::createmarray ( integer, intent(in), optional  m,
integer, intent(in), optional  n 
)
private

constructor for mesh arrays

Definition at line 129 of file marray_base.f90.

Here is the caller graph for this function:

◆ createselection()

type(selection_base) function marray_base_mod::createselection ( integer, dimension(6), optional  idx)
private

Definition at line 935 of file marray_base.f90.

Here is the caller graph for this function:

◆ crossproduct_0()

real function, dimension(size(this%data2d,dim=1),3) marray_base_mod::crossproduct_0 ( class(marray_base), intent(in)  this,
class(marray_base), intent(in)  that 
)
private

compute outer (vector) product of 2 marrays works only, if last dimension has size 3!

Definition at line 855 of file marray_base.f90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ cuboid()

subroutine marray_base_mod::cuboid ( class(selection_base this,
integer, intent(in)  imin,
integer, intent(in)  imax,
integer, intent(in)  jmin,
integer, intent(in)  jmax,
integer, intent(in)  kmin,
integer, intent(in)  kmax 
)
private

Definition at line 1048 of file marray_base.f90.

◆ destroy()

subroutine marray_base_mod::destroy ( class(marray_base this,
logical, optional  called_from_finalize 
)
private

basic destructor of mesh arrays - this is called automatically if deallocate is invoked

Definition at line 901 of file marray_base.f90.

Here is the caller graph for this function:

◆ destroy_selection()

subroutine marray_base_mod::destroy_selection ( class(selection_base this)
private

destructor of all selection classes

Definition at line 1092 of file marray_base.f90.

Here is the caller graph for this function:

◆ destructor_selection()

subroutine marray_base_mod::destructor_selection ( type(selection_base this)
private

actual destructor of selection_base

Definition at line 1102 of file marray_base.f90.

Here is the caller graph for this function:

◆ everything()

subroutine marray_base_mod::everything ( class(selection_base this)
private

Definition at line 1077 of file marray_base.f90.

◆ finalize()

subroutine marray_base_mod::finalize ( type(marray_base this)
private

Definition at line 924 of file marray_base.f90.

Here is the caller graph for this function:

◆ init()

logical function marray_base_mod::init ( class(marray_base), intent(inout)  this,
integer, intent(in), optional  m,
integer, intent(in), optional  n 
)
private

basic initialization of mesh array class

Definition at line 146 of file marray_base.f90.

◆ init_selection()

logical function marray_base_mod::init_selection ( class(selection_base), intent(inout)  this,
integer, dimension(6), optional  idx 
)
private

basic initialization of selection

Definition at line 951 of file marray_base.f90.

◆ initmeshproperties()

subroutine, public marray_base_mod::initmeshproperties ( integer, intent(in)  igmin_,
integer, intent(in)  igmax_,
integer, intent(in)  jgmin_,
integer, intent(in)  jgmax_,
integer, intent(in)  kgmin_,
integer, intent(in)  kgmax_ 
)

sets global mesh properties

This subroutine should be called only once in MeshInit.

Definition at line 224 of file marray_base.f90.

Here is the caller graph for this function:

◆ multmarray_0()

real function, dimension(size(this%data1d)) marray_base_mod::multmarray_0 ( class(marray_base), intent(in)  this,
class(marray_base), intent(in)  that 
)
private

multiply 2 mesh arrays

Definition at line 709 of file marray_base.f90.

Here is the caller graph for this function:

◆ multmarray_1()

real function, dimension(size(this%data1d)) marray_base_mod::multmarray_1 ( class(marray_base), intent(in)  this,
real, dimension(:), intent(in)  a 
)
private

multiply 1D fortran array and mesh arrays

Definition at line 737 of file marray_base.f90.

Here is the caller graph for this function:

◆ multmarray_2()

real function, dimension(size(this%data2d,1),size(this%data2d,2)) marray_base_mod::multmarray_2 ( class(marray_base), intent(in)  this,
real, dimension(:,:), intent(in)  a 
)
private

multiply 2D fortran array and mesh arrays

Definition at line 760 of file marray_base.f90.

Here is the caller graph for this function:

◆ multmarray_3()

real function, dimension(size(this%data3d,1),size(this%data3d,2),size(this%data3d,3)) marray_base_mod::multmarray_3 ( class(marray_base), intent(in)  this,
real, dimension(:,:,:), intent(in)  a 
)
private

multiply 3D fortran array and mesh arrays

Definition at line 783 of file marray_base.f90.

Here is the caller graph for this function:

◆ multmarray_4()

real function, dimension(size(this%data4d,1),size(this%data4d,2),size(this%data4d,3), size(this%data4d,4)) marray_base_mod::multmarray_4 ( class(marray_base), intent(in)  this,
real, dimension(:,:,:,:), intent(in)  a 
)
private

multiply 4D fortran array and mesh arrays

Definition at line 806 of file marray_base.f90.

Here is the caller graph for this function:

◆ multmarray_5()

real function, dimension(size(this%data5d,1),size(this%data5d,2),size(this%data5d,3), size(this%data5d,4),size(this%data5d,5)) marray_base_mod::multmarray_5 ( class(marray_base), intent(in)  this,
real, dimension(:,:,:,:,:), intent(in)  a 
)
private

multiply 5D fortran array and mesh arrays

Definition at line 830 of file marray_base.f90.

Here is the caller graph for this function:

◆ remapbounds_0()

real function, dimension(:,:,:), pointer marray_base_mod::remapbounds_0 ( class(marray_base this,
real, dimension(igmin:,jgmin:,kgmin:), intent(in), target  array 
)

remap lower bounds in the first 3 dimensions of rank 0 mesh arrays

This is a short hack to obviate a restriction in the generation of subarray pointers. The indices of subarrays usually start with a lower bound of 1, but Fosite requires that all mesh data arrays start with lower bounds of IGMIN, JGMIN and KGMIN, which are not equal to 1 in general.

Parameters
this[in,out] this

Definition at line 301 of file marray_base.f90.

Here is the caller graph for this function:

◆ remapbounds_1()

real function, dimension(:,:,:,:), pointer marray_base_mod::remapbounds_1 ( class(marray_base this,
real, dimension(igmin:,jgmin:,kgmin:,:), intent(in), target  array 
)

remap lower bounds in the first 3 dimensions of rank 1 mesh arrays

Parameters
this[in,out] this

Definition at line 315 of file marray_base.f90.

Here is the caller graph for this function:

◆ remapbounds_2()

real function, dimension(:,:,:,:,:), pointer marray_base_mod::remapbounds_2 ( class(marray_base this,
real, dimension(igmin:,jgmin:,kgmin:,:,:), intent(in), target  array 
)

remap lower bounds in the first 3 dimensions of rank 2 mesh arrays

Parameters
this[in,out]

Definition at line 330 of file marray_base.f90.

Here is the caller graph for this function:

◆ shapesmatch()

pure logical function marray_base_mod::shapesmatch ( class(marray_base), intent(in)  this,
class(marray_base), intent(in)  that 
)
private

Definition at line 548 of file marray_base.f90.

Here is the caller graph for this function:

Variable Documentation

◆ idx_init

logical, save marray_base_mod::idx_init = .FALSE.
private

init status

Definition at line 46 of file marray_base.f90.

◆ igmax

integer, save marray_base_mod::igmax
private

1st dim

Definition at line 42 of file marray_base.f90.

◆ igmin

integer, save marray_base_mod::igmin
private

Definition at line 42 of file marray_base.f90.

◆ inum

integer, save marray_base_mod::inum
private

Definition at line 45 of file marray_base.f90.

◆ jgmax

integer, save marray_base_mod::jgmax
private

2nd dim

Definition at line 43 of file marray_base.f90.

◆ jgmin

integer, save marray_base_mod::jgmin
private

Definition at line 43 of file marray_base.f90.

◆ jnum

integer, save marray_base_mod::jnum
private

Definition at line 45 of file marray_base.f90.

◆ kgmax

integer, save marray_base_mod::kgmax
private

3rd dim

Definition at line 44 of file marray_base.f90.

◆ kgmin

integer, save marray_base_mod::kgmin
private

Definition at line 44 of file marray_base.f90.

◆ knum

integer, save marray_base_mod::knum
private

array sizes

Definition at line 45 of file marray_base.f90.