Skip to content

Commit 57a106e

Browse files
Merge pull request #333 from easifem/shion-dev
Updates for STVectorFields
2 parents ede47fa + 60571f3 commit 57a106e

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

src/modules/FEVariable/src/FEVariable_QuadratureVariableMethod.F90

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,29 @@ END FUNCTION Quadrature_Vector_SpaceTime2
406406
! QuadratureVariable@ConstructorMethods
407407
!----------------------------------------------------------------------------
408408

409+
!> author: Shion Shimizu
410+
! date: 2025-12-11
411+
! summary: Create FEVariable which is vector and space-time
412+
413+
INTERFACE
414+
MODULE PURE FUNCTION Quadrature_Vector_SpaceTime3(rank, vartype, &
415+
dim1, dim2, dim3) &
416+
RESULT(obj)
417+
TYPE(FEVariable_) :: obj
418+
TYPE(FEVariableVector_), INTENT(IN) :: rank
419+
TYPE(FEVariableSpaceTime_), INTENT(IN) :: vartype
420+
INTEGER(I4B), INTENT(IN) :: dim1, dim2, dim3
421+
END FUNCTION Quadrature_Vector_SpaceTime3
422+
END INTERFACE
423+
424+
INTERFACE QuadratureVariable
425+
MODULE PROCEDURE Quadrature_Vector_SpaceTime3
426+
END INTERFACE QuadratureVariable
427+
428+
!----------------------------------------------------------------------------
429+
! QuadratureVariable@ConstructorMethods
430+
!----------------------------------------------------------------------------
431+
409432
!> author: Vikas Sharma, Ph. D.
410433
! date: 2021-12-10
411434
! update: 2021-12-10

src/modules/STForceVector/src/STForceVector_Method.F90

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,27 @@ END SUBROUTINE obj_STForceVector_3
197197
MODULE PROCEDURE obj_STForceVector_3
198198
END INTERFACE STForceVector_
199199

200+
!----------------------------------------------------------------------------
201+
!
202+
!----------------------------------------------------------------------------
203+
204+
INTERFACE
205+
MODULE PURE SUBROUTINE obj_STForceVector_24( &
206+
testSpace, testTime, c, crank, ans, &
207+
dim1, dim2, dim3)
208+
CLASS(ElemshapeData_), INTENT(IN) :: testSpace
209+
CLASS(ElemshapeData_), INTENT(IN) :: testTime
210+
TYPE(FEVariable_), INTENT(IN) :: c
211+
TYPE(FEVariableVector_), INTENT(IN) :: crank
212+
REAL(DFP), INTENT(INOUT) :: ans(:, :, :)
213+
INTEGER(I4B), INTENT(OUT) :: dim1, dim2, dim3
214+
END SUBROUTINE obj_STForceVector_24
215+
END INTERFACE
216+
217+
INTERFACE STForceVector_
218+
MODULE PROCEDURE obj_STForceVector_24
219+
END INTERFACE STForceVector_
220+
200221
!----------------------------------------------------------------------------
201222
! STForceVector
202223
!----------------------------------------------------------------------------

src/submodules/FEVariable/src/[email protected]

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,24 @@
291291
val=val)
292292
END PROCEDURE Quadrature_Vector_SpaceTime2
293293

294+
!----------------------------------------------------------------------------
295+
!
296+
!----------------------------------------------------------------------------
297+
298+
MODULE PROCEDURE Quadrature_Vector_SpaceTime3
299+
INTEGER(I4B) :: tsize, s(3)
300+
301+
s(1) = dim1
302+
s(2) = dim2
303+
s(3) = dim3
304+
tsize = dim1 * dim2 * dim3
305+
306+
CALL FEVariableInitiate(obj=obj, s=s, defineon=TypeFEVariableOpt%Quadrature, &
307+
vartype=TypeFEVariableOpt%spacetime, &
308+
rank=TypeFEVariableOpt%vector, len=tsize)
309+
310+
END PROCEDURE Quadrature_Vector_SpaceTime3
311+
294312
!----------------------------------------------------------------------------
295313
! QuadratureVariable
296314
!----------------------------------------------------------------------------

src/submodules/STForceVector/src/[email protected]

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
USE BaseType, ONLY: TypeFEVariableMatrix
2626
USE BaseType, ONLY: math => TypeMathOpt
2727
USE ElemshapeData_Method, ONLY: GetProjectionOfdNTdXt_
28+
USE Display_Method, ONLY: display
2829

2930
IMPLICIT NONE
3031
CONTAINS
@@ -229,6 +230,46 @@
229230
END DO
230231
END PROCEDURE obj_STForceVector_3
231232

233+
!----------------------------------------------------------------------------
234+
!
235+
!----------------------------------------------------------------------------
236+
237+
MODULE PROCEDURE obj_STForceVector_24
238+
INTEGER(I4B) :: ips, ipt, nipt, nips, spaceCompo, i1, i2, i3
239+
REAL(DFP) :: cbar(3), realval
240+
241+
dim1 = FEVariableSize(obj=c, dim=1)
242+
243+
dim2 = testSpace%nns
244+
nips = testSpace%nips
245+
246+
dim3 = testTime%nns
247+
nipt = testTime%nips
248+
249+
ans(1:dim1, 1:dim2, 1:dim3) = math%zero
250+
251+
DO ipt = 1, nipt
252+
253+
DO ips = 1, nips
254+
255+
CALL FEVariableGetInterpolation_( &
256+
obj=c, rank=crank, N=testSpace%N, nns=testSpace%nns, spaceIndx=ips, &
257+
timeIndx=ipt, T=testTime%N(:, ipt), nnt=testTime%nns, scale=math%one, &
258+
addContribution=math%no, ans=cbar, tsize=spaceCompo)
259+
260+
realval = testSpace%js(ips) * testSpace%ws(ips) * &
261+
testSpace%thickness(ips) * testTime%js(ipt) * testTime%ws(ipt)
262+
263+
CALL OuterProd_(a=cbar(1:dim1), b=testSpace%N(1:dim2, ips), &
264+
c=testtime%N(1:dim3, ipt), &
265+
anscoeff=math%one, scale=realval, &
266+
ans=ans, dim1=i1, dim2=i2, dim3=i3)
267+
268+
END DO
269+
END DO
270+
271+
END PROCEDURE obj_STForceVector_24
272+
232273
!----------------------------------------------------------------------------
233274
! STForceVector
234275
!----------------------------------------------------------------------------

0 commit comments

Comments
 (0)