diff --git a/src/modules/BaseType/src/BaseType.F90 b/src/modules/BaseType/src/BaseType.F90 index 9e22b3853..61ddc1fa1 100644 --- a/src/modules/BaseType/src/BaseType.F90 +++ b/src/modules/BaseType/src/BaseType.F90 @@ -1471,11 +1471,15 @@ END SUBROUTINE highorder_refelem !! number of shape functions REAL(DFP), ALLOCATABLE :: N(:, :) !! Shape function value `N(I, ips)` - !! nrow = nns - !! ncol = nips + !! shape: (nns, nips) + !! dim 1 = number of nodes in element + !! dim 2 = number of integration points REAL(DFP), ALLOCATABLE :: dNdXi(:, :, :) !! Local derivative of a shape function !! shape = nns, xidim, nips + !! dim 1 = number of nodes in element + !! dim 2 = xi dimension (xi, eta, zeta) + !! dim 3 = number of integration points REAL(DFP), ALLOCATABLE :: jacobian(:, :, :) !! Jacobian of mapping `J(:,:,ips)` also $\mathbf{F}_{\Xi x}$ !! shape = nsd, xidim, nips diff --git a/src/modules/ElemshapeData/src/ElemshapeData_Method.F90 b/src/modules/ElemshapeData/src/ElemshapeData_Method.F90 index 841d55eda..faff724e8 100644 --- a/src/modules/ElemshapeData/src/ElemshapeData_Method.F90 +++ b/src/modules/ElemshapeData/src/ElemshapeData_Method.F90 @@ -20,15 +20,6 @@ MODULE ElemshapeData_Method USE ElemshapeData_GetMethods USE ElemshapeData_GradientMethods -! USE ElemshapeData_H1Methods -! USE ElemshapeData_HCurlMethods -! USE ElemshapeData_HDivMethods -! USE ElemshapeData_DGMethods - -USE ElemshapeData_Lagrange -USE ElemshapeData_Hierarchical -USE ElemshapeData_Orthogonal - USE ElemshapeData_HRGNParamMethods USE ElemshapeData_HRQIParamMethods USE ElemshapeData_HminHmaxMethods @@ -41,4 +32,14 @@ MODULE ElemshapeData_Method USE ElemshapeData_StabilizationParamMethods USE ElemshapeData_UnitNormalMethods +! USE ElemshapeData_H1Methods +! USE ElemshapeData_HCurlMethods +! USE ElemshapeData_HDivMethods +! USE ElemshapeData_DGMethods + +USE ElemshapeData_Lagrange +USE ElemshapeData_Hierarchical +USE ElemshapeData_Orthogonal + + END MODULE ElemshapeData_Method diff --git a/src/modules/ElemshapeData/src/ElemshapeData_SetMethods.F90 b/src/modules/ElemshapeData/src/ElemshapeData_SetMethods.F90 index 77772c3b7..fb8531e84 100644 --- a/src/modules/ElemshapeData/src/ElemshapeData_SetMethods.F90 +++ b/src/modules/ElemshapeData/src/ElemshapeData_SetMethods.F90 @@ -242,6 +242,9 @@ MODULE PURE SUBROUTINE stsd_SetJacobian(obj, val, dNdXi, T) CLASS(STElemshapeData_), INTENT(INOUT) :: obj REAL(DFP), INTENT(IN) :: val(:, :, :) !! Space time nodal values of coordinates + !! dim1 = spatial coordinates + !! dim2 = space nodes + !! dim3 = time nodes REAL(DFP), INTENT(IN) :: dNdXi(:, :, :) !! Local derivative of shape function for geometry REAL(DFP), INTENT(IN) :: T(:) diff --git a/src/modules/IntVector/src/IntVector_GetMethod.F90 b/src/modules/IntVector/src/IntVector_GetMethod.F90 index 866b6248a..91d3c2646 100644 --- a/src/modules/IntVector/src/IntVector_GetMethod.F90 +++ b/src/modules/IntVector/src/IntVector_GetMethod.F90 @@ -395,6 +395,21 @@ MODULE FUNCTION intVec_getPointer_2(obj, datatype) RESULT(val) END FUNCTION intVec_getPointer_2 END INTERFACE GetPointer +!---------------------------------------------------------------------------- +! GetPointers@getMethod +!---------------------------------------------------------------------------- + +!> author: Vikas Sharma, Ph. D. +! date: 2025-05-29 +! summary: Get the pointer to the raw data of the IntVector instance. + +INTERFACE GetPointer + MODULE FUNCTION intVec_getPointer_3(obj) RESULT(val) + CLASS(IntVector_), INTENT(IN), TARGET :: obj + INTEGER(I4B), POINTER :: val(:) + END FUNCTION intVec_getPointer_3 +END INTERFACE GetPointer + !---------------------------------------------------------------------------- ! getIndex@getMethod !---------------------------------------------------------------------------- diff --git a/src/modules/QuadraturePoint/src/QuadraturePoint_Method.F90 b/src/modules/QuadraturePoint/src/QuadraturePoint_Method.F90 index e00778429..f3d5492ff 100755 --- a/src/modules/QuadraturePoint/src/QuadraturePoint_Method.F90 +++ b/src/modules/QuadraturePoint/src/QuadraturePoint_Method.F90 @@ -193,10 +193,12 @@ END SUBROUTINE obj_Initiate3 !> author: Vikas Sharma, Ph. D. ! date: 23 July 2021 -! summary: This routine Initiates the quadrature points +! summary: This routine Initiates the quadrature points from number of IP ! !# Introduction ! +! This routine is used to initiate the quadrature points from number of +! integration points. ! We call obj_Initiate6 in this routine INTERFACE Initiate @@ -207,7 +209,7 @@ MODULE SUBROUTINE obj_Initiate4(obj, refElem, nips, quadratureType, & CLASS(ReferenceElement_), INTENT(IN) :: refElem !! Reference element INTEGER(I4B), INTENT(IN) :: nips(1) - !! order of integrand + !! number of quadrature points CHARACTER(*), INTENT(IN) :: quadratureType !! Total number quadrature points REAL(DFP), OPTIONAL, INTENT(IN) :: alpha @@ -366,6 +368,17 @@ END SUBROUTINE obj_Initiate8 ! !---------------------------------------------------------------------------- +!> author: Vikas Sharma, Ph. D. +! date: 2025-05-21 +! summary: This routine Initiates the quadrature points +! +!# Introduction +! +! This routine is used to initiate the quadrature points from order of +! of integrand. +! This subroutine does not require formation of reference element. +! This routine calls obj_Initiate11 method. + INTERFACE Initiate MODULE SUBROUTINE obj_Initiate9(obj, elemType, domainName, order, & quadratureType, alpha, beta, lambda, xij) @@ -374,9 +387,8 @@ MODULE SUBROUTINE obj_Initiate9(obj, elemType, domainName, order, & INTEGER(I4B), INTENT(IN) :: elemType !! element name CHARACTER(*), INTENT(IN) :: domainName - !! domain name + !! domain name for reference element !! unit or biunit - !! Reference-element INTEGER(I4B), INTENT(IN) :: order !! order of integrand INTEGER(I4B), INTENT(IN) :: quadratureType @@ -398,6 +410,17 @@ END SUBROUTINE obj_Initiate9 ! !---------------------------------------------------------------------------- +!> author: Vikas Sharma, Ph. D. +! date: 2025-05-21 +! summary: This routine Initiates the quadrature points +! +!# Introduction +! +! This routine is used to initiate the quadrature points from number of +! integration points. +! This subroutine does not require formation of reference element. +! This routine calls obj_Initiate12 method. + INTERFACE Initiate MODULE SUBROUTINE obj_Initiate10(obj, elemType, domainName, nips, & quadratureType, alpha, beta, lambda, xij) @@ -406,11 +429,10 @@ MODULE SUBROUTINE obj_Initiate10(obj, elemType, domainName, nips, & INTEGER(I4B), INTENT(IN) :: elemType !! element name CHARACTER(*), INTENT(IN) :: domainName - !! domain name + !! domain name, reference element !! unit or biunit - !! Reference-element INTEGER(I4B), INTENT(IN) :: nips(1) - !! order of integrand + !! Number of integration points !! in the case of quadrangle element nips(1) denotes the !! number of quadrature points in the x and y direction !! so the total number of quadrature points are nips(1)*nips(1) diff --git a/src/modules/String/src/String_Class.F90 b/src/modules/String/src/String_Class.F90 index d186c7b07..49f90a65c 100644 --- a/src/modules/String/src/String_Class.F90 +++ b/src/modules/String/src/String_Class.F90 @@ -312,18 +312,16 @@ MODULE String_Class PROCEDURE, PASS(self) :: tempname !! Return a safe temporary name suitable for temporary file !! or directories. - GENERIC :: to_number => & - to_integer_I1P, & + GENERIC :: to_number => to_integer_I1P, to_integer_I4P, to_integer_I8P, & + to_real_R8P, to_real_R4P, & #ifndef _NVF to_integer_I2P, & #endif - to_integer_I4P, & - to_integer_I8P, & #ifdef _R16P to_real_R16P, & #endif - to_real_R8P, & - to_real_R4P + to_logical_1 + !! Cast string to number. PROCEDURE, PASS(self) :: unescape !! Unescape double backslashes (or custom escaped character). @@ -475,7 +473,7 @@ MODULE String_Class !! Cast string to real. PROCEDURE, PRIVATE, PASS(self) :: to_real_R16P !! Cast string to real. - PROCEDURE, PUBLIC, PASS(self) :: to_logical + PROCEDURE, PUBLIC, PASS(self) :: to_logical, to_logical_1 !! Convert a string to logical ! assignments PROCEDURE, PRIVATE, PASS(lhs) :: string_assign_string @@ -3169,6 +3167,25 @@ END FUNCTION tempname ! !---------------------------------------------------------------------------- +!> author: Vikas Sharma, Ph. D. +! date: 2025-05-29 +! summary: Cast string to logical + +ELEMENTAL FUNCTION to_logical_1(self, kind) RESULT(ans) + CLASS(string), INTENT(IN) :: self + !! The string. + LOGICAL, INTENT(IN) :: kind + !! Mold parameter for kind detection. + LOGICAL :: ans + !! The number into the string. + + ans = self%to_logical() +END FUNCTION to_logical_1 + +!---------------------------------------------------------------------------- +! +!---------------------------------------------------------------------------- + !> author: Vikas Sharma, Ph. D. ! date: 23 July 2022 ! summary: Cast string to integer (I1P). diff --git a/src/submodules/ElemshapeData/src/ElemshapeData_SetMethods@Methods.F90 b/src/submodules/ElemshapeData/src/ElemshapeData_SetMethods@Methods.F90 index 8b773d8d3..c81920b61 100644 --- a/src/submodules/ElemshapeData/src/ElemshapeData_SetMethods@Methods.F90 +++ b/src/submodules/ElemshapeData/src/ElemshapeData_SetMethods@Methods.F90 @@ -49,7 +49,10 @@ !---------------------------------------------------------------------------- MODULE PROCEDURE elemsd_SetBarycentricCoord -obj%coord(1:obj%nsd, 1:obj%nips) = MATMUL(val, N) +INTEGER(I4B) :: nns +nns = SIZE(N, 1) +obj%coord(1:obj%nsd, 1:obj%nips) = MATMUL(val(1:obj%nsd, 1:nns), & + N(1:nns, 1:obj%nips)) END PROCEDURE elemsd_SetBarycentricCoord !---------------------------------------------------------------------------- @@ -57,6 +60,8 @@ !---------------------------------------------------------------------------- MODULE PROCEDURE stsd_SetBarycentricCoord +! TODO: Improve this function by removing the temporary variable +! It is better to store a temporary variable in obj itself CALL SetBarycentricCoord(obj=obj, val=MATMUL(val, T), N=N) END PROCEDURE stsd_SetBarycentricCoord @@ -136,7 +141,8 @@ !---------------------------------------------------------------------------- MODULE PROCEDURE elemsd_SetJacobian -obj%jacobian(1:obj%nsd, 1:obj%xidim, 1:obj%nips) = MATMUL(val, dNdXi) +obj%jacobian(1:obj%nsd, 1:obj%xidim, 1:obj%nips) = & + MATMUL(val(1:obj%nsd, 1:obj%nns), dNdXi(1:obj%nns, 1:obj%xidim, 1:obj%nips)) END PROCEDURE elemsd_SetJacobian !---------------------------------------------------------------------------- @@ -144,7 +150,9 @@ !---------------------------------------------------------------------------- MODULE PROCEDURE stsd_SetJacobian -obj%jacobian = MATMUL(MATMUL(val, T), dNdXi) +obj%jacobian(1:obj%nsd, 1:obj%xidim, 1:obj%nips) = & + MATMUL(MATMUL(val(1:obj%nsd, 1:obj%nns, :), T), & + dNdXi(1:obj%nns, 1:obj%xidim, 1:obj%nips)) END PROCEDURE stsd_SetJacobian !---------------------------------------------------------------------------- diff --git a/src/submodules/IntVector/src/IntVector_GetMethod@Methods.F90 b/src/submodules/IntVector/src/IntVector_GetMethod@Methods.F90 index cab95a6a9..d797a0ae5 100644 --- a/src/submodules/IntVector/src/IntVector_GetMethod@Methods.F90 +++ b/src/submodules/IntVector/src/IntVector_GetMethod@Methods.F90 @@ -92,16 +92,31 @@ val = obj%val END IF END PROCEDURE intVec_get_7a + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_7b IF (ALLOCATED(obj%val)) THEN val = obj%val END IF END PROCEDURE intVec_get_7b + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_7c IF (ALLOCATED(obj%val)) THEN val = obj%val END IF END PROCEDURE intVec_get_7c + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_7d IF (ALLOCATED(obj%val)) THEN val = obj%val @@ -118,18 +133,30 @@ END IF END PROCEDURE intVec_get_8a +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_8b IF (ALLOCATED(obj%val)) THEN val = obj%val(Indx) END IF END PROCEDURE intVec_get_8b +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_8c IF (ALLOCATED(obj%val)) THEN val = obj%val(Indx) END IF END PROCEDURE intVec_get_8c +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_8d IF (ALLOCATED(obj%val)) THEN val = obj%val(Indx) @@ -146,18 +173,30 @@ END IF END PROCEDURE intVec_get_9a +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_9b IF (ALLOCATED(obj%val)) THEN val = obj%val(iStart:iEnd:Stride) END IF END PROCEDURE intVec_get_9b +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_9c IF (ALLOCATED(obj%val)) THEN val = obj%val(iStart:iEnd:Stride) END IF END PROCEDURE intVec_get_9c +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_9d IF (ALLOCATED(obj%val)) THEN val = obj%val(iStart:iEnd:Stride) @@ -169,16 +208,31 @@ !---------------------------------------------------------------------------- MODULE PROCEDURE intVec_get_10a -#include "./include/intvec_get_10.inc" +#include "./include/intvec_get_10.F90" END PROCEDURE intVec_get_10a + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_10b -#include "./include/intvec_get_10.inc" +#include "./include/intvec_get_10.F90" END PROCEDURE intVec_get_10b + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_10c -#include "./include/intvec_get_10.inc" +#include "./include/intvec_get_10.F90" END PROCEDURE intVec_get_10c + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_10d -#include "./include/intvec_get_10.inc" +#include "./include/intvec_get_10.F90" END PROCEDURE intVec_get_10d !---------------------------------------------------------------------------- @@ -186,16 +240,31 @@ !---------------------------------------------------------------------------- MODULE PROCEDURE intVec_get_11a -#include "./include/intvec_get_11.inc" +#include "./include/intvec_get_11.F90" END PROCEDURE intVec_get_11a + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_11b -#include "./include/intvec_get_11.inc" +#include "./include/intvec_get_11.F90" END PROCEDURE intVec_get_11b + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_11c -#include "./include/intvec_get_11.inc" +#include "./include/intvec_get_11.F90" END PROCEDURE intVec_get_11c + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_11d -#include "./include/intvec_get_11.inc" +#include "./include/intvec_get_11.F90" END PROCEDURE intVec_get_11d !---------------------------------------------------------------------------- @@ -203,16 +272,31 @@ !---------------------------------------------------------------------------- MODULE PROCEDURE intVec_get_12a -#include "./include/intvec_get_12.inc" +#include "./include/intvec_get_12.F90" END PROCEDURE intVec_get_12a + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_12b -#include "./include/intvec_get_12.inc" +#include "./include/intvec_get_12.F90" END PROCEDURE intVec_get_12b + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_12c -#include "./include/intvec_get_12.inc" +#include "./include/intvec_get_12.F90" END PROCEDURE intVec_get_12c + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- + MODULE PROCEDURE intVec_get_12d -#include "./include/intvec_get_12.inc" +#include "./include/intvec_get_12.F90" END PROCEDURE intVec_get_12d !---------------------------------------------------------------------------- @@ -220,16 +304,29 @@ !---------------------------------------------------------------------------- MODULE PROCEDURE intVec_get_13a -#include "./include/intvec_get_13.inc" +#include "./include/intvec_get_13.F90" END PROCEDURE intVec_get_13a + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- MODULE PROCEDURE intVec_get_13b -#include "./include/intvec_get_13.inc" +#include "./include/intvec_get_13.F90" END PROCEDURE intVec_get_13b + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- MODULE PROCEDURE intVec_get_13c -#include "./include/intvec_get_13.inc" +#include "./include/intvec_get_13.F90" END PROCEDURE intVec_get_13c + +!---------------------------------------------------------------------------- +! get +!---------------------------------------------------------------------------- +! MODULE PROCEDURE intVec_get_13d -#include "./include/intvec_get_13.inc" +#include "./include/intvec_get_13.F90" END PROCEDURE intVec_get_13d !---------------------------------------------------------------------------- @@ -248,6 +345,14 @@ val => obj%val END PROCEDURE intVec_getPointer_2 +!---------------------------------------------------------------------------- +! getPointer +!---------------------------------------------------------------------------- + +MODULE PROCEDURE intVec_getPointer_3 +val => obj%val +END PROCEDURE intVec_getPointer_3 + !---------------------------------------------------------------------------- ! IndexOf !---------------------------------------------------------------------------- diff --git a/src/submodules/IntVector/src/include/intvec_get_10.inc b/src/submodules/IntVector/src/include/intvec_get_10.F90 similarity index 100% rename from src/submodules/IntVector/src/include/intvec_get_10.inc rename to src/submodules/IntVector/src/include/intvec_get_10.F90 diff --git a/src/submodules/IntVector/src/include/intvec_get_11.inc b/src/submodules/IntVector/src/include/intvec_get_11.F90 similarity index 100% rename from src/submodules/IntVector/src/include/intvec_get_11.inc rename to src/submodules/IntVector/src/include/intvec_get_11.F90 diff --git a/src/submodules/IntVector/src/include/intvec_get_12.inc b/src/submodules/IntVector/src/include/intvec_get_12.F90 similarity index 100% rename from src/submodules/IntVector/src/include/intvec_get_12.inc rename to src/submodules/IntVector/src/include/intvec_get_12.F90 diff --git a/src/submodules/IntVector/src/include/intvec_get_13.inc b/src/submodules/IntVector/src/include/intvec_get_13.F90 similarity index 100% rename from src/submodules/IntVector/src/include/intvec_get_13.inc rename to src/submodules/IntVector/src/include/intvec_get_13.F90