Skip to content

Commit 05869e2

Browse files
Merge pull request #226 from vickysharma0812/issue212
Updates in STScalarField_Class
2 parents c06d888 + 8106099 commit 05869e2

File tree

2 files changed

+62
-76
lines changed

2 files changed

+62
-76
lines changed

src/modules/STScalarField/src/STScalarField_Class.F90

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,9 +1031,10 @@ END FUNCTION stsField_GetPrefix
10311031
! summary: Apply Dirichlet boundary condition
10321032

10331033
INTERFACE
1034-
MODULE SUBROUTINE stsField_ApplyDirichletBC1(obj, dbc)
1034+
MODULE SUBROUTINE stsField_ApplyDirichletBC1(obj, dbc, times)
10351035
CLASS(STScalarField_), INTENT(INOUT) :: obj
10361036
CLASS(DirichletBC_), INTENT(IN) :: dbc
1037+
REAL(DFP), OPTIONAL, INTENT(IN) :: times(:)
10371038
END SUBROUTINE stsField_ApplyDirichletBC1
10381039
END INTERFACE
10391040

@@ -1046,9 +1047,10 @@ END SUBROUTINE stsField_ApplyDirichletBC1
10461047
! summary: Apply Dirichlet boundary condition
10471048

10481049
INTERFACE
1049-
MODULE SUBROUTINE stsField_ApplyDirichletBC2(obj, dbc)
1050+
MODULE SUBROUTINE stsField_ApplyDirichletBC2(obj, dbc, times)
10501051
CLASS(STScalarField_), INTENT(INOUT) :: obj
10511052
CLASS(DirichletBCPointer_), INTENT(IN) :: dbc(:)
1053+
REAL(DFP), OPTIONAL, INTENT(IN) :: times(:)
10521054
END SUBROUTINE stsField_ApplyDirichletBC2
10531055
END INTERFACE
10541056

src/submodules/STScalarField/src/[email protected]

Lines changed: 58 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -25,92 +25,76 @@
2525
!----------------------------------------------------------------------------
2626

2727
MODULE PROCEDURE stsField_applyDirichletBC1
28-
CHARACTER( LEN = * ), PARAMETER :: myName = "stsField_applyDirichletBC1"
29-
REAL( DFP ), ALLOCATABLE :: nodalvalue(:,:)
30-
INTEGER( I4B ), ALLOCATABLE :: nodenum( : )
31-
INTEGER( I4B ) :: idof
32-
!!
33-
!! main
34-
!!
35-
CALL dbc%get( nodalvalue=nodalvalue, nodenum=nodenum )
36-
!!
37-
IF( size( nodalvalue, 2 ) .EQ. 1 ) THEN
38-
!!
39-
DO idof = 1, obj%timecompo
40-
CALL obj%Set( &
41-
& globalNode=nodenum, &
42-
& value=nodalvalue(:,1), &
43-
& timecompo=idof )
44-
END DO
45-
!!
46-
ELSE
47-
!!
48-
!! check
49-
!!
50-
IF( SIZE( nodalvalue, 2 ) .NE. obj%timeCompo ) &
51-
& CALL e%raiseError(modName//'::'//myName// " - "// &
52-
& 'SIZE( nodalvalue, 2 ) .NE. obj%timeCompo')
53-
!!
54-
CALL obj%Set( &
55-
& globalNode=nodenum, &
56-
& value=nodalvalue )
57-
!!
28+
CHARACTER(*), PARAMETER :: myName = "stsField_applyDirichletBC1()"
29+
REAL(DFP), ALLOCATABLE :: nodalvalue(:, :)
30+
INTEGER(I4B), ALLOCATABLE :: nodenum(:)
31+
INTEGER(I4B) :: idof, aint
32+
33+
CALL dbc%get(nodalvalue=nodalvalue, nodenum=nodenum, times=times)
34+
35+
IF (SIZE(nodalvalue, 2) .EQ. 1) THEN
36+
DO idof = 1, obj%timecompo
37+
CALL obj%Set(globalNode=nodenum, VALUE=nodalvalue(:, 1), &
38+
& timecompo=idof)
39+
END DO
40+
41+
ELSE
42+
aint = SIZE(nodalvalue, 2)
43+
IF (SIZE(nodalvalue, 2) .NE. obj%timeCompo) THEN
44+
CALL e%raiseError(modName//'::'//myName//" - "// &
45+
& '[INERNAL ERROR] :: SIZE( nodalvalue, 2 ) is '// &
46+
& tostring(aint)//' which is not equal to obj%timeCompo '// &
47+
& ' which is '//tostring(obj%timeCompo))
5848
END IF
59-
!!
60-
!!
61-
IF( ALLOCATED( nodalvalue ) ) DEALLOCATE( nodalvalue )
62-
IF( ALLOCATED( nodenum ) ) DEALLOCATE( nodenum )
63-
!!
49+
CALL obj%Set(globalNode=nodenum, VALUE=nodalvalue)
50+
51+
END IF
52+
53+
IF (ALLOCATED(nodalvalue)) DEALLOCATE (nodalvalue)
54+
IF (ALLOCATED(nodenum)) DEALLOCATE (nodenum)
6455
END PROCEDURE stsField_applyDirichletBC1
6556

6657
!----------------------------------------------------------------------------
6758
!
6859
!----------------------------------------------------------------------------
6960

7061
MODULE PROCEDURE stsField_applyDirichletBC2
71-
CHARACTER( LEN = * ), PARAMETER :: myName = "stsField_applyDirichletBC2"
72-
REAL( DFP ), ALLOCATABLE :: nodalvalue(:,:)
73-
INTEGER( I4B ), ALLOCATABLE :: nodenum( : )
74-
INTEGER( I4B ) :: idof, ii
75-
!!
76-
!! main
77-
!!
78-
DO ii = 1, SIZE( dbc )
79-
!!
80-
CALL dbc(ii)%ptr%get( nodalvalue=nodalvalue, nodenum=nodenum )
81-
!!
82-
IF( SIZE( nodalvalue, 2 ) .EQ. 1 ) THEN
83-
!!
84-
DO idof = 1, obj%timecompo
85-
CALL obj%Set( &
86-
& globalNode=nodenum, &
87-
& value=nodalvalue(:,1), &
88-
& timecompo=idof )
89-
END DO
90-
!!
91-
ELSE
92-
!!
93-
!! check
94-
!!
95-
IF( SIZE( nodalvalue, 2 ) .NE. obj%timeCompo ) &
96-
& CALL e%raiseError(modName//'::'//myName// " - "// &
97-
& 'SIZE( nodalvalue, 2 ) .NE. obj%timeCompo')
98-
!!
99-
CALL obj%Set( &
100-
& globalNode=nodenum, &
101-
& value=nodalvalue )
102-
!!
62+
CHARACTER(*), PARAMETER :: myName = "stsField_applyDirichletBC2"
63+
REAL(DFP), ALLOCATABLE :: nodalvalue(:, :)
64+
INTEGER(I4B), ALLOCATABLE :: nodenum(:)
65+
INTEGER(I4B) :: idof, ii, aint
66+
67+
DO ii = 1, SIZE(dbc)
68+
CALL dbc(ii)%ptr%get(nodalvalue=nodalvalue, nodenum=nodenum, &
69+
& times=times)
70+
71+
IF (SIZE(nodalvalue, 2) .EQ. 1) THEN
72+
DO idof = 1, obj%timecompo
73+
CALL obj%Set(globalNode=nodenum, VALUE=nodalvalue(:, 1), &
74+
& timecompo=idof)
75+
END DO
76+
77+
ELSE
78+
79+
aint = SIZE(nodalvalue, 2)
80+
81+
IF (SIZE(nodalvalue, 2) .NE. obj%timeCompo) THEN
82+
CALL e%raiseError(modName//'::'//myName//" - "// &
83+
& '[INERNAL ERROR] :: SIZE( nodalvalue, 2 ) is '// &
84+
& tostring(aint)//' which is not equal to obj%timeCompo '// &
85+
& ' which is '//tostring(obj%timeCompo))
10386
END IF
104-
!!
105-
END DO
106-
!!
107-
IF( ALLOCATED( nodalvalue ) ) DEALLOCATE( nodalvalue )
108-
IF( ALLOCATED( nodenum ) ) DEALLOCATE( nodenum )
109-
!!
87+
88+
CALL obj%Set(globalNode=nodenum, VALUE=nodalvalue)
89+
END IF
90+
END DO
91+
92+
IF (ALLOCATED(nodalvalue)) DEALLOCATE (nodalvalue)
93+
IF (ALLOCATED(nodenum)) DEALLOCATE (nodenum)
11094
END PROCEDURE stsField_applyDirichletBC2
11195

11296
!----------------------------------------------------------------------------
11397
!
11498
!----------------------------------------------------------------------------
11599

116-
END SUBMODULE DBCMethods
100+
END SUBMODULE DBCMethods

0 commit comments

Comments
 (0)