MODFLOW 6
version 6.7.0.dev0
USGS Modular Hydrologic Model
Main Page
Related Pages
Modules
Data Types List
Files
File List
File Members
VectorBase.f90
Go to the documentation of this file.
1
module
vectorbasemodule
2
use
kindmodule
,
only
: i4b, dp, lgp
3
implicit none
4
private
5
6
type
,
public
,
abstract
::
vectorbasetype
7
logical(LGP)
:: is_mem_managed
8
contains
9
procedure
(
create_mm_if
),
deferred
:: create_mm
10
procedure
(
destroy_if
),
deferred
:: destroy
11
procedure
(
get_array_if
),
deferred
:: get_array
12
procedure
(
get_ownership_range_if
),
deferred
:: get_ownership_range
13
procedure
(
get_size_if
),
deferred
:: get_size
14
procedure
(
get_value_local_if
),
deferred
:: get_value_local
15
procedure
(
zero_entries_if
),
deferred
:: zero_entries
16
procedure
(
set_value_local_if
),
deferred
:: set_value_local
17
procedure
(
axpy_if
),
deferred
:: axpy
18
procedure
(
norm2_if
),
deferred
:: norm2
19
procedure
(
print_if
),
deferred
:: print
20
end type
vectorbasetype
21
22
abstract
interface
23
subroutine
create_mm_if
(this, n, name, mem_path)
24
import
vectorbasetype
, i4b
25
class
(
vectorbasetype
) :: this
!< this vector
26
integer(I4B)
:: n
!< the nr. of elements in the (local) vector
27
character(len=*)
:: name
!< the variable name (for access through memory manager)
28
character(len=*)
:: mem_path
!< memory path for storing the underlying memory items
29
end subroutine
create_mm_if
30
subroutine
destroy_if
(this)
31
import
vectorbasetype
32
class
(
vectorbasetype
) :: this
!< this vector
33
end subroutine
destroy_if
34
function
get_array_if
(this)
result
(array)
35
import
vectorbasetype
, dp
36
class
(
vectorbasetype
) :: this
!< this vector
37
real
(dp),
dimension(:)
,
pointer
,
contiguous
:: array
38
end function
get_array_if
39
subroutine
get_ownership_range_if
(this, start, end)
40
import
vectorbasetype
, i4b
41
class
(
vectorbasetype
) :: this
!< this vector
42
integer(I4B)
:: start, end
!< local range in global numbering
43
end subroutine
44
function
get_size_if
(this)
result
(size)
45
import
vectorbasetype
, i4b
46
class
(
vectorbasetype
) :: this
!< this vector
47
integer(I4B)
:: size
!< the global vector size
48
end function
49
function
get_value_local_if
(this, idx)
result
(val)
50
import
vectorbasetype
, i4b, dp
51
class
(
vectorbasetype
) :: this
!< this vector
52
integer(I4B)
:: idx
!< index in local numbering
53
real
(dp) :: val
!< the value at the index
54
end function
55
subroutine
zero_entries_if
(this)
56
import
vectorbasetype
57
class
(
vectorbasetype
) :: this
58
end subroutine
59
subroutine
set_value_local_if
(this, idx, val)
60
import
vectorbasetype
, i4b, dp
61
class
(
vectorbasetype
) :: this
!< this vector
62
integer(I4B)
:: idx
!< index in local numbering
63
real
(DP) :: val
!< the value to set
64
end subroutine
65
subroutine
axpy_if
(this, alpha, vec_x)
66
import
vectorbasetype
, dp
67
class
(
vectorbasetype
) :: this
!< this vector y => alpha*x + y
68
real
(DP) :: alpha
!< the factor
69
class
(
vectorbasetype
),
pointer
:: vec_x
!< the vector to add
70
end subroutine
71
function
norm2_if
(this)
result
(n2)
72
import
vectorbasetype
, dp
73
class
(
vectorbasetype
) :: this
!< this vector
74
real
(dp) :: n2
!< the calculated 2-norm
75
end function
76
subroutine
print_if
(this)
77
import
vectorbasetype
78
class
(
vectorbasetype
) :: this
79
end subroutine
print_if
80
end interface
81
82
end module
vectorbasemodule
vectorbasemodule::axpy_if
Definition:
VectorBase.f90:65
vectorbasemodule::create_mm_if
Definition:
VectorBase.f90:23
vectorbasemodule::destroy_if
Definition:
VectorBase.f90:30
vectorbasemodule::get_array_if
Definition:
VectorBase.f90:34
vectorbasemodule::get_ownership_range_if
Definition:
VectorBase.f90:39
vectorbasemodule::get_size_if
Definition:
VectorBase.f90:44
vectorbasemodule::get_value_local_if
Definition:
VectorBase.f90:49
vectorbasemodule::norm2_if
Definition:
VectorBase.f90:71
vectorbasemodule::print_if
Definition:
VectorBase.f90:76
vectorbasemodule::set_value_local_if
Definition:
VectorBase.f90:59
vectorbasemodule::zero_entries_if
Definition:
VectorBase.f90:55
kindmodule
This module defines variable data types.
Definition:
kind.f90:8
vectorbasemodule
Definition:
VectorBase.f90:1
vectorbasemodule::vectorbasetype
Definition:
VectorBase.f90:6
src
Utilities
Vector
VectorBase.f90
Generated on Fri Dec 20 2024 02:36:14 for MODFLOW 6 by
1.9.1