Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 74 additions & 18 deletions src/modules/ConvectiveMatrix/src/ConvectiveMatrix_Method.F90
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ MODULE ConvectiveMatrix_Method
PRIVATE

PUBLIC :: ConvectiveMatrix
PUBLIC :: ConvectiveMatrix_

!----------------------------------------------------------------------------
! ConvectiveMatrix@ConvectiveMatrixMethods
Expand All @@ -36,7 +37,7 @@ MODULE ConvectiveMatrix_Method
! update: 2021-11-21
! summary: returns the convective matrix

INTERFACE
INTERFACE ConvectiveMatrix
MODULE PURE FUNCTION ConvectiveMatrix_1(test, trial, term1, &
& term2, opt) RESULT(Ans)
CLASS(ElemshapeData_), INTENT(IN) :: test
Expand All @@ -45,15 +46,32 @@ MODULE PURE FUNCTION ConvectiveMatrix_1(test, trial, term1, &
!! del_x, del_y, del_z, del_x_all, del_none
INTEGER(I4B), INTENT(IN) :: term2
!! del_x, del_y, del_z, del_x_all, del_none
INTEGER( I4B ), OPTIONAL, INTENT( IN ) :: opt
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
REAL(DFP), ALLOCATABLE :: ans(:, :)
END FUNCTION ConvectiveMatrix_1
END INTERFACE

INTERFACE ConvectiveMatrix
MODULE PROCEDURE ConvectiveMatrix_1
END INTERFACE ConvectiveMatrix

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------

!> author: Shion Shimizu
! date: 2025-03-05
! summary: Convective matrix without allcation

INTERFACE ConvectiveMatrix_
MODULE PURE SUBROUTINE ConvectiveMatrix1_(test, trial, term1, &
& term2, nrow, ncol, opt, ans)
CLASS(ElemshapeData_), INTENT(IN) :: test
CLASS(ElemshapeData_), INTENT(IN) :: trial
INTEGER(I4B), INTENT(IN) :: term1
INTEGER(I4B), INTENT(IN) :: term2
INTEGER(I4B), INTENT(OUT) :: nrow, ncol
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
REAL(DFP), INTENT(inout) :: ans(:, :)
END SUBROUTINE ConvectiveMatrix1_
END INTERFACE ConvectiveMatrix_

!----------------------------------------------------------------------------
! ConvectiveMatrix@ConvectiveMatrixMethods
!----------------------------------------------------------------------------
Expand All @@ -63,7 +81,7 @@ END FUNCTION ConvectiveMatrix_1
! update: 2021-11-21
! summary: returns the convective matrix

INTERFACE
INTERFACE ConvectiveMatrix
MODULE PURE FUNCTION ConvectiveMatrix_2(test, trial, c, crank, term1, &
& term2, opt) RESULT(Ans)
CLASS(ElemshapeData_), INTENT(IN) :: test
Expand All @@ -76,16 +94,35 @@ MODULE PURE FUNCTION ConvectiveMatrix_2(test, trial, c, crank, term1, &
!! del_x, del_y, del_z, del_x_all, del_none
INTEGER(I4B), INTENT(IN) :: term2
!! del_x, del_y, del_z, del_x_all, del_none
INTEGER( I4B ), OPTIONAL, INTENT( IN ) :: opt
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
!! number of copies
REAL(DFP), ALLOCATABLE :: ans(:, :)
END FUNCTION ConvectiveMatrix_2
END INTERFACE

INTERFACE ConvectiveMatrix
MODULE PROCEDURE ConvectiveMatrix_2
END INTERFACE ConvectiveMatrix

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------

!> author: Shion Shimizu
! date: 2025-03-05
! summary: Convective matrix without allcation

INTERFACE ConvectiveMatrix_
MODULE PURE SUBROUTINE ConvectiveMatrix2_(test, trial, c, crank, term1, &
& term2, opt, ans, nrow, ncol)
CLASS(ElemshapeData_), INTENT(IN) :: test
CLASS(ElemshapeData_), INTENT(IN) :: trial
TYPE(FEVariable_), INTENT(IN) :: c
TYPE(FEVariableScalar_), INTENT(IN) :: crank
INTEGER(I4B), INTENT(IN) :: term1
INTEGER(I4B), INTENT(IN) :: term2
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
REAL(DFP), INTENT(inout) :: ans(:, :)
INTEGER(I4B), INTENT(OUT) :: nrow, ncol
END SUBROUTINE ConvectiveMatrix2_
END INTERFACE ConvectiveMatrix_

!----------------------------------------------------------------------------
! ConvectiveMatrix@ConvectiveMatrixMethods
!----------------------------------------------------------------------------
Expand All @@ -95,7 +132,7 @@ END FUNCTION ConvectiveMatrix_2
! update: 2021-11-21
! summary: returns the convective matrix

INTERFACE
INTERFACE ConvectiveMatrix
MODULE PURE FUNCTION ConvectiveMatrix_3(test, trial, c, crank, term1, &
& term2, opt) RESULT(Ans)
CLASS(ElemshapeData_), INTENT(IN) :: test
Expand All @@ -108,18 +145,37 @@ MODULE PURE FUNCTION ConvectiveMatrix_3(test, trial, c, crank, term1, &
!! del_x, del_y, del_z, del_x_all, del_none
INTEGER(I4B), INTENT(IN) :: term2
!! del_x, del_y, del_z, del_x_all, del_none
INTEGER( I4B ), OPTIONAL, INTENT( IN ) :: opt
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
!! number of copies
REAL(DFP), ALLOCATABLE :: ans(:, :)
END FUNCTION ConvectiveMatrix_3
END INTERFACE

INTERFACE ConvectiveMatrix
MODULE PROCEDURE ConvectiveMatrix_3
END INTERFACE ConvectiveMatrix

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------

!> author: Shion Shimizu
! date: 2025-03-05
! summary: Convective matrix without allcation

INTERFACE ConvectiveMatrix_
MODULE PURE SUBROUTINE ConvectiveMatrix3_(test, trial, c, crank, term1, &
& term2, opt, ans, nrow, ncol)
CLASS(ElemshapeData_), INTENT(IN) :: test
CLASS(ElemshapeData_), INTENT(IN) :: trial
TYPE(FEVariable_), INTENT(IN) :: c
TYPE(FEVariableVector_), INTENT(IN) :: crank
INTEGER(I4B), INTENT(IN) :: term1
INTEGER(I4B), INTENT(IN) :: term2
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
REAL(DFP), INTENT(inout) :: ans(:, :)
INTEGER(I4B), INTENT(OUT) :: nrow, ncol
END SUBROUTINE ConvectiveMatrix3_
END INTERFACE ConvectiveMatrix_

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------

END MODULE ConvectiveMatrix_Method
89 changes: 89 additions & 0 deletions src/modules/DiffusionMatrix/src/DiffusionMatrix_Method.F90
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,23 @@ MODULE PURE FUNCTION DiffusionMatrix_2(test, trial, k, krank, opt) &
END FUNCTION DiffusionMatrix_2
END INTERFACE DiffusionMatrix

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------

INTERFACE DiffusionMatrix_
MODULE PURE SUBROUTINE DiffusionMatrix2_(test, trial, k, krank, opt, &
ans, nrow, ncol)
CLASS(ElemshapeData_), INTENT(IN) :: test
CLASS(ElemshapeData_), INTENT(IN) :: trial
CLASS(FEVariable_), INTENT(IN) :: k
TYPE(FEVariableScalar_), INTENT(IN) :: krank
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
REAL(DFP), INTENT(INOUT) :: ans(:, :)
INTEGER(I4B), INTENT(OUT) :: nrow, ncol
END SUBROUTINE DiffusionMatrix2_
END INTERFACE DiffusionMatrix_

!----------------------------------------------------------------------------
! DiffusionMatrix@DiffusionMatrixMethods
!----------------------------------------------------------------------------
Expand Down Expand Up @@ -149,6 +166,23 @@ MODULE PURE FUNCTION DiffusionMatrix_3(test, trial, k, krank, opt) &
END FUNCTION DiffusionMatrix_3
END INTERFACE DiffusionMatrix

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------

INTERFACE DiffusionMatrix_
MODULE PURE SUBROUTINE DiffusionMatrix3_(test, trial, k, krank, opt, &
ans, nrow, ncol)
CLASS(ElemshapeData_), INTENT(IN) :: test
CLASS(ElemshapeData_), INTENT(IN) :: trial
CLASS(FEVariable_), INTENT(IN) :: k
TYPE(FEVariableVector_), INTENT(IN) :: krank
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
REAL(DFP), INTENT(INOUT) :: ans(:, :)
INTEGER(I4B), INTENT(OUT) :: nrow, ncol
END SUBROUTINE DiffusionMatrix3_
END INTERFACE DiffusionMatrix_

!----------------------------------------------------------------------------
! DiffusionMatrix@DiffusionMatrixMethods
!----------------------------------------------------------------------------
Expand Down Expand Up @@ -181,6 +215,23 @@ MODULE PURE FUNCTION DiffusionMatrix_4(test, trial, k, krank, opt) &
END FUNCTION DiffusionMatrix_4
END INTERFACE DiffusionMatrix

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------

INTERFACE DiffusionMatrix_
MODULE PURE SUBROUTINE DiffusionMatrix4_(test, trial, k, krank, opt, &
ans, nrow, ncol)
CLASS(ElemshapeData_), INTENT(IN) :: test
CLASS(ElemshapeData_), INTENT(IN) :: trial
CLASS(FEVariable_), INTENT(IN) :: k
TYPE(FEVariableMatrix_), INTENT(IN) :: krank
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
REAL(DFP), INTENT(INOUT) :: ans(:, :)
INTEGER(I4B), INTENT(OUT) :: nrow, ncol
END SUBROUTINE DiffusionMatrix4_
END INTERFACE DiffusionMatrix_

!----------------------------------------------------------------------------
! DiffusionMatrix@DiffusionMatrixMethods
!----------------------------------------------------------------------------
Expand Down Expand Up @@ -217,6 +268,25 @@ MODULE PURE FUNCTION DiffusionMatrix_5(test, trial, c1, c2, c1rank, &
END FUNCTION DiffusionMatrix_5
END INTERFACE DiffusionMatrix

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------

INTERFACE DiffusionMatrix_
MODULE PURE SUBROUTINE DiffusionMatrix5_(test, trial, c1, c2, c1rank, &
c2rank, opt, ans, nrow, ncol)
CLASS(ElemshapeData_), INTENT(IN) :: test
CLASS(ElemshapeData_), INTENT(IN) :: trial
CLASS(FEVariable_), INTENT(IN) :: c1
CLASS(FEVariable_), INTENT(IN) :: c2
TYPE(FEVariableScalar_), INTENT(IN) :: c1rank
TYPE(FEVariableScalar_), INTENT(IN) :: c2rank
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
REAL(DFP), INTENT(INOUT) :: ans(:, :)
INTEGER(I4B), INTENT(OUT) :: nrow, ncol
END SUBROUTINE DiffusionMatrix5_
END INTERFACE DiffusionMatrix_

!----------------------------------------------------------------------------
! DiffusionMatrix@DiffusionMatrixMethods
!----------------------------------------------------------------------------
Expand Down Expand Up @@ -253,6 +323,25 @@ MODULE PURE FUNCTION DiffusionMatrix_6(test, trial, c1, c2, c1rank, &
END FUNCTION DiffusionMatrix_6
END INTERFACE DiffusionMatrix

!----------------------------------------------------------------------------
!
!----------------------------------------------------------------------------

INTERFACE DiffusionMatrix_
MODULE PURE SUBROUTINE DiffusionMatrix6_(test, trial, c1, c2, c1rank, &
c2rank, opt, ans, nrow, ncol)
CLASS(ElemshapeData_), INTENT(IN) :: test
CLASS(ElemshapeData_), INTENT(IN) :: trial
CLASS(FEVariable_), INTENT(IN) :: c1
CLASS(FEVariable_), INTENT(IN) :: c2
TYPE(FEVariableScalar_), INTENT(IN) :: c1rank
TYPE(FEVariableVector_), INTENT(IN) :: c2rank
INTEGER(I4B), OPTIONAL, INTENT(IN) :: opt
REAL(DFP), INTENT(INOUT) :: ans(:, :)
INTEGER(I4B), INTENT(OUT) :: nrow, ncol
END SUBROUTINE DiffusionMatrix6_
END INTERFACE DiffusionMatrix_

!----------------------------------------------------------------------------
! DiffusionMatrix@DiffusionMatrixMethods
!----------------------------------------------------------------------------
Expand Down
Loading