diff --git a/src/modules/FEVariable/src/FEVariable_QuadratureVariableMethod.F90 b/src/modules/FEVariable/src/FEVariable_QuadratureVariableMethod.F90 index 616c3fb6..fce35456 100644 --- a/src/modules/FEVariable/src/FEVariable_QuadratureVariableMethod.F90 +++ b/src/modules/FEVariable/src/FEVariable_QuadratureVariableMethod.F90 @@ -406,6 +406,29 @@ END FUNCTION Quadrature_Vector_SpaceTime2 ! QuadratureVariable@ConstructorMethods !---------------------------------------------------------------------------- +!> author: Shion Shimizu +! date: 2025-12-11 +! summary: Create FEVariable which is vector and space-time + +INTERFACE + MODULE PURE FUNCTION Quadrature_Vector_SpaceTime3(rank, vartype, & + dim1, dim2, dim3) & + RESULT(obj) + TYPE(FEVariable_) :: obj + TYPE(FEVariableVector_), INTENT(IN) :: rank + TYPE(FEVariableSpaceTime_), INTENT(IN) :: vartype + INTEGER(I4B), INTENT(IN) :: dim1, dim2, dim3 + END FUNCTION Quadrature_Vector_SpaceTime3 +END INTERFACE + +INTERFACE QuadratureVariable + MODULE PROCEDURE Quadrature_Vector_SpaceTime3 +END INTERFACE QuadratureVariable + +!---------------------------------------------------------------------------- +! QuadratureVariable@ConstructorMethods +!---------------------------------------------------------------------------- + !> author: Vikas Sharma, Ph. D. ! date: 2021-12-10 ! update: 2021-12-10 diff --git a/src/modules/STForceVector/src/STForceVector_Method.F90 b/src/modules/STForceVector/src/STForceVector_Method.F90 index a20872b2..eb434cf4 100644 --- a/src/modules/STForceVector/src/STForceVector_Method.F90 +++ b/src/modules/STForceVector/src/STForceVector_Method.F90 @@ -197,6 +197,27 @@ END SUBROUTINE obj_STForceVector_3 MODULE PROCEDURE obj_STForceVector_3 END INTERFACE STForceVector_ +!---------------------------------------------------------------------------- +! +!---------------------------------------------------------------------------- + +INTERFACE + MODULE PURE SUBROUTINE obj_STForceVector_24( & + testSpace, testTime, c, crank, ans, & + dim1, dim2, dim3) + CLASS(ElemshapeData_), INTENT(IN) :: testSpace + CLASS(ElemshapeData_), INTENT(IN) :: testTime + TYPE(FEVariable_), INTENT(IN) :: c + TYPE(FEVariableVector_), INTENT(IN) :: crank + REAL(DFP), INTENT(INOUT) :: ans(:, :, :) + INTEGER(I4B), INTENT(OUT) :: dim1, dim2, dim3 + END SUBROUTINE obj_STForceVector_24 +END INTERFACE + +INTERFACE STForceVector_ + MODULE PROCEDURE obj_STForceVector_24 +END INTERFACE STForceVector_ + !---------------------------------------------------------------------------- ! STForceVector !---------------------------------------------------------------------------- diff --git a/src/submodules/FEVariable/src/FEVariable_QuadratureVariableMethod@Methods.F90 b/src/submodules/FEVariable/src/FEVariable_QuadratureVariableMethod@Methods.F90 index c7a22144..3b4327b2 100644 --- a/src/submodules/FEVariable/src/FEVariable_QuadratureVariableMethod@Methods.F90 +++ b/src/submodules/FEVariable/src/FEVariable_QuadratureVariableMethod@Methods.F90 @@ -291,6 +291,24 @@ val=val) END PROCEDURE Quadrature_Vector_SpaceTime2 +!---------------------------------------------------------------------------- +! +!---------------------------------------------------------------------------- + +MODULE PROCEDURE Quadrature_Vector_SpaceTime3 +INTEGER(I4B) :: tsize, s(3) + +s(1) = dim1 +s(2) = dim2 +s(3) = dim3 +tsize = dim1 * dim2 * dim3 + +CALL FEVariableInitiate(obj=obj, s=s, defineon=TypeFEVariableOpt%Quadrature, & + vartype=TypeFEVariableOpt%spacetime, & + rank=TypeFEVariableOpt%vector, len=tsize) + +END PROCEDURE Quadrature_Vector_SpaceTime3 + !---------------------------------------------------------------------------- ! QuadratureVariable !---------------------------------------------------------------------------- diff --git a/src/submodules/STForceVector/src/STForceVector_Method@Methods.F90 b/src/submodules/STForceVector/src/STForceVector_Method@Methods.F90 index 242721e7..8202dc6b 100644 --- a/src/submodules/STForceVector/src/STForceVector_Method@Methods.F90 +++ b/src/submodules/STForceVector/src/STForceVector_Method@Methods.F90 @@ -25,6 +25,7 @@ USE BaseType, ONLY: TypeFEVariableMatrix USE BaseType, ONLY: math => TypeMathOpt USE ElemshapeData_Method, ONLY: GetProjectionOfdNTdXt_ +USE Display_Method, ONLY: display IMPLICIT NONE CONTAINS @@ -229,6 +230,46 @@ END DO END PROCEDURE obj_STForceVector_3 +!---------------------------------------------------------------------------- +! +!---------------------------------------------------------------------------- + +MODULE PROCEDURE obj_STForceVector_24 +INTEGER(I4B) :: ips, ipt, nipt, nips, spaceCompo, i1, i2, i3 +REAL(DFP) :: cbar(3), realval + +dim1 = FEVariableSize(obj=c, dim=1) + +dim2 = testSpace%nns +nips = testSpace%nips + +dim3 = testTime%nns +nipt = testTime%nips + +ans(1:dim1, 1:dim2, 1:dim3) = math%zero + +DO ipt = 1, nipt + + DO ips = 1, nips + + CALL FEVariableGetInterpolation_( & + obj=c, rank=crank, N=testSpace%N, nns=testSpace%nns, spaceIndx=ips, & + timeIndx=ipt, T=testTime%N(:, ipt), nnt=testTime%nns, scale=math%one, & + addContribution=math%no, ans=cbar, tsize=spaceCompo) + + realval = testSpace%js(ips) * testSpace%ws(ips) * & + testSpace%thickness(ips) * testTime%js(ipt) * testTime%ws(ipt) + + CALL OuterProd_(a=cbar(1:dim1), b=testSpace%N(1:dim2, ips), & + c=testtime%N(1:dim3, ipt), & + anscoeff=math%one, scale=realval, & + ans=ans, dim1=i1, dim2=i2, dim3=i3) + + END DO +END DO + +END PROCEDURE obj_STForceVector_24 + !---------------------------------------------------------------------------- ! STForceVector !----------------------------------------------------------------------------