@@ -105,6 +105,7 @@ SUBROUTINE RBE3_PROC ( RTYPE, REC_NO, IERR )
105105 REAL (DOUBLE) :: WT6(6 ) ! WT6(i) = Sum of weights in comp i of an indep grid NB *** new 10/03/21
106106
107107 REAL (DOUBLE) :: SXY,SZX,SYZ ! new Rdd terms according to victor
108+ REAL (DOUBLE) :: WTi6(MRBE3,6 ) ! per-DoF grid weights
108109
109110! **********************************************************************************************************************************
110111 IF (WRT_LOG >= SUBR_BEGEND) THEN
@@ -147,6 +148,9 @@ SUBROUTINE RBE3_PROC ( RTYPE, REC_NO, IERR )
147148 WT6(I) = ZERO ! NB *** new 10/03/21
148149 ENDDO ! NB *** new 10/03/21
149150
151+ ! zero-init WTi6
152+ WTi6 = ZERO
153+
150154! Start reading at the 2nd record of L1F for this RBE3 (first record, RYPE, was read above in calling subr, RIGID_ELEM_PROC):
151155 ! Read 2nd record from L1F for this RBE3
152156 READ (L1F,IOSTAT= IOCHK) REID, AGRID_D, COMPS_D, IRBE3, WT
@@ -173,14 +177,14 @@ SUBROUTINE RBE3_PROC ( RTYPE, REC_NO, IERR )
173177 IERR = IERR + 1
174178 JERR = JERR + 1
175179 ENDIF
176- CALL RDOF ( COMPS_I(I), CDOF_I ) ! NB *** new 10/03/21 + next 6 lines
177- IF (CDOF_I( 1 ) == ' 1 ' ) THEN ; WT6( 1 ) = WT6( 1 ) + WTi(I) ; ENDIF
178- IF (CDOF_I(2 ) == ' 1' ) THEN ; WT6( 2 ) = WT6( 2 ) + WTi(I) ; ENDIF
179- IF (CDOF_I( 3 ) == ' 1 ' ) THEN ; WT6( 3 ) = WT6( 3 ) + WTi(I) ; ENDIF
180- IF (CDOF_I( 4 ) == ' 1 ' ) THEN ; WT6(4 ) = WT6(4 ) + WTi(I) ; ENDIF
181- IF (CDOF_I( 5 ) == ' 1 ' ) THEN ; WT6( 5 ) = WT6( 5 ) + WTi(I) ; ENDIF
182- IF (CDOF_I( 6 ) == ' 1 ' ) THEN ; WT6( 6 ) = WT6( 6 ) + WTi(I) ; ENDIF
183- write (f06,* )
180+ CALL RDOF ( COMPS_I(I), CDOF_I )
181+ DO J = 1 , 6
182+ IF (CDOF_I(J ) == ' 1' ) THEN
183+ WTi6(I,J ) = WTi(I)
184+ WT6(J ) = WT6(J ) + WTi(I)
185+ END IF
186+ END DO
187+ WRITE (f06,* )
184188 ENDDO
185189
186190! Return if error
@@ -237,9 +241,9 @@ SUBROUTINE RBE3_PROC ( RTYPE, REC_NO, IERR )
237241 DYI(J) = DUM3(2 )
238242 DZI(J) = DUM3(3 )
239243
240- DX_BAR = DX_BAR + WTi(J )* DXI(J) / WT6( 1 ) ! NB *** new 10/03/21. Change WT to WT6(1 )
241- DY_BAR = DY_BAR + WTi(J )* DYI(J) / WT6( 2 ) ! NB *** new 10/03/21. Change WT to WT6(2 )
242- DZ_BAR = DZ_BAR + WTi(J )* DZI(J) / WT6( 3 ) ! NB *** new 10/03/21. Change WT to WT6(3 )
244+ DX_BAR = DX_BAR + WTi6(J, 1 )* DXI(J)
245+ DY_BAR = DY_BAR + WTi6(J, 2 )* DYI(J)
246+ DZ_BAR = DZ_BAR + WTi6(J, 3 )* DZI(J)
243247
244248
245249 ENDDO
@@ -253,9 +257,9 @@ SUBROUTINE RBE3_PROC ( RTYPE, REC_NO, IERR )
253257
254258 DO J= 1 ,IRBE3
255259
256- EBAR_YZ = EBAR_YZ + WTi(J) * ( DYI(J)* DYI(J) + DZI(J)* DZI(J) ) / WT
257- EBAR_ZX = EBAR_ZX + WTi(J) * ( DZI(J)* DZI(J) + DXI(J)* DXI(J) ) / WT
258- EBAR_XY = EBAR_XY + WTi(J) * ( DXI(J)* DXI(J) + DYI(J)* DYI(J) ) / WT
260+ EBAR_YZ = EBAR_YZ + WTi6(J, 3 ) * DYI(J)* DYI(J) + WTi6(J, 2 ) * DZI(J)* DZI(J)
261+ EBAR_ZX = EBAR_ZX + WTi6(J, 1 ) * DZI(J)* DZI(J) + WTi6(J, 3 ) * DXI(J)* DXI(J)
262+ EBAR_XY = EBAR_XY + WTi6(J, 2 ) * DXI(J)* DXI(J) + WTi6(J, 1 ) * DYI(J)* DYI(J)
259263
260264 ENDDO
261265
@@ -265,9 +269,9 @@ SUBROUTINE RBE3_PROC ( RTYPE, REC_NO, IERR )
265269 SYZ = ZERO
266270
267271 DO J= 1 ,IRBE3
268- SXY = SXY + WTi(J ) * DXI(J) * DYI(J) / WT
269- SZX = SZX + WTi(J ) * DZI(J) * DXI(J) / WT
270- SYZ = SYZ + WTi(J ) * DYI(J) * DZI(J) / WT
272+ SXY = SXY + WTi6(J, 3 ) * DXI(J) * DYI(J)
273+ SZX = SZX + WTi6(J, 2 ) * DZI(J) * DXI(J)
274+ SYZ = SYZ + WTi6(J, 1 ) * DYI(J) * DZI(J)
271275 END DO
272276
273277 CALL TDOF_COL_NUM ( ' G ' , G_SET_COL_NUM )
@@ -304,10 +308,10 @@ SUBROUTINE RBE3_PROC ( RTYPE, REC_NO, IERR )
304308 ! Write coeff for the T1, T2 or T3 component at the ref pt
305309 IF ((I == 1 ) .OR. (I == 2 ) .OR. (I == 3 )) THEN
306310 IF (DABS(WT) > EPS1) THEN
307- WRITE (L1J) RMG_ROW_NUM, RMG_COL_NUM_D(I), ONE
311+ WRITE (L1J) RMG_ROW_NUM, RMG_COL_NUM_D(I), WT6(I)
308312 ITERM_RMG = ITERM_RMG + 1
309313 ELSE
310- WRITE (L1J) RMG_ROW_NUM, RMG_COL_NUM_D(I), ONE
314+ WRITE (L1J) RMG_ROW_NUM, RMG_COL_NUM_D(I), WT6(I)
311315 ITERM_RMG = ITERM_RMG + 1
312316 CYCLE do_i1
313317 ENDIF
@@ -473,9 +477,9 @@ SUBROUTINE RBE3_PROC ( RTYPE, REC_NO, IERR )
473477 CALL MATMULT_FFF_T ( T0D, T0I, 3 , 3 , 3 , TDI )
474478
475479 IF ((I == 1 ) .OR. (I == 2 ) .OR. (I == 3 )) THEN
476- CALL WRITE_L1J_123 ( I, J, ITERM_RMG, G_SET_COL_NUM, RMG_ROW_NUM, WTi , AGRID_I, CDOF_I, COMPS_I, TDI )
480+ CALL WRITE_L1J_123 ( I, J, ITERM_RMG, G_SET_COL_NUM, RMG_ROW_NUM, WTi6 , AGRID_I, CDOF_I, COMPS_I, TDI )
477481 ELSE
478- CALL WRITE_L1J_456 ( I, J, ITERM_RMG, G_SET_COL_NUM, RMG_ROW_NUM, WTi , AGRID_I, CDOF_I, DXI, DYI, DZI )
482+ CALL WRITE_L1J_456 ( I, J, ITERM_RMG, G_SET_COL_NUM, RMG_ROW_NUM, WTi6 , AGRID_I, CDOF_I, DXI, DYI, DZI )
479483 ENDIF
480484
481485 ENDDO do_j1
@@ -529,7 +533,7 @@ SUBROUTINE RBE3_PROC ( RTYPE, REC_NO, IERR )
529533
530534! ##################################################################################################################################
531535
532- SUBROUTINE WRITE_L1J_123 ( I , J , ITERM_RMG , G_SET_COL_NUM , RMG_ROW_NUM , WTi , AGRID_I , CDOF_I , COMPS_I , TDI )
536+ SUBROUTINE WRITE_L1J_123 ( I , J , ITERM_RMG , G_SET_COL_NUM , RMG_ROW_NUM , WTi6 , AGRID_I , CDOF_I , COMPS_I , TDI )
533537
534538 USE PENTIUM_II_KIND, ONLY : LONG, DOUBLE
535539 USE IOUNT1, ONLY : L1J
@@ -552,7 +556,7 @@ SUBROUTINE WRITE_L1J_123 ( I, J, ITERM_RMG, G_SET_COL_NUM, RMG_ROW_NUM, WTi, AGR
552556 INTEGER (LONG) :: ROW_NUM_START_I ! DOF number where TDOF data begins for a grid
553557
554558 REAL (DOUBLE) , INTENT (IN ) :: TDI(3 ,3 ) ! TOD'*T0I
555- REAL (DOUBLE) , INTENT (IN ) :: WTi (MRBE3) ! Weight value for an indep grid
559+ REAL (DOUBLE) , INTENT (IN ) :: WTi6 (MRBE3, 6 ) ! Weight value for an indep grid (PER-DOF)
556560
557561! **********************************************************************************************************************************
558562
@@ -566,7 +570,7 @@ SUBROUTINE WRITE_L1J_123 ( I, J, ITERM_RMG, G_SET_COL_NUM, RMG_ROW_NUM, WTi, AGR
566570 RMG_COL_NUM_I = TDOF(ROW_NUM,G_SET_COL_NUM)
567571
568572 IF (RMG_COL_NUM_I > 0 ) THEN ! NB *** new 10/03/21 Change WT (below) to WT6(K)
569- WRITE (L1J) RMG_ROW_NUM, RMG_COL_NUM_I, - WTi(J )* TDI(I,K) / WT6( K)
573+ WRITE (L1J) RMG_ROW_NUM, RMG_COL_NUM_I, - WTi6(J,K )* TDI(I,K)
570574 ITERM_RMG = ITERM_RMG + 1
571575 ELSE
572576 WRITE (ERR,1513 ) ' RBE3_PROC' , AGRID_I(J) ,COMPS_I(J), RMG_COL_NUM_I
@@ -590,7 +594,7 @@ END SUBROUTINE WRITE_L1J_123
590594
591595! ##################################################################################################################################
592596
593- SUBROUTINE WRITE_L1J_456 ( I , J , ITERM_RMG , G_SET_COL_NUM , RMG_ROW_NUM , WTi , AGRID_I , CDOF_I , DXI , DYI , DZI )
597+ SUBROUTINE WRITE_L1J_456 ( I , J , ITERM_RMG , G_SET_COL_NUM , RMG_ROW_NUM , WTi6 , AGRID_I , CDOF_I , DXI , DYI , DZI )
594598
595599 USE PENTIUM_II_KIND, ONLY : LONG, DOUBLE
596600 USE IOUNT1, ONLY : L1J
@@ -613,7 +617,7 @@ SUBROUTINE WRITE_L1J_456 ( I, J, ITERM_RMG, G_SET_COL_NUM, RMG_ROW_NUM, WTi, AGR
613617 REAL (DOUBLE) , INTENT (IN ) :: DXI(MRBE3) ! Distances from ref pt to pt i in X global directions at ref pt
614618 REAL (DOUBLE) , INTENT (IN ) :: DYI(MRBE3) ! Distances from ref pt to pt i in Y global directions at ref pt
615619 REAL (DOUBLE) , INTENT (IN ) :: DZI(MRBE3) ! Distances from ref pt to pt i in Z global directions at ref pt
616- REAL (DOUBLE) , INTENT (IN ) :: WTi (MRBE3) ! Weight value for an indep grid
620+ REAL (DOUBLE) , INTENT (IN ) :: WTi6 (MRBE3, 6 ) ! Weight value for an indep grid (PER-DOF)
617621
618622! **********************************************************************************************************************************
619623! xx CALL CALC_TDOF_ROW_NUM ( AGRID_I(J), ROW_NUM_START_I, 'N' )
@@ -631,36 +635,36 @@ SUBROUTINE WRITE_L1J_456 ( I, J, ITERM_RMG, G_SET_COL_NUM, RMG_ROW_NUM, WTi, AGR
631635 IF (I == 4 ) THEN ! Rotation about x, i.e. in yz (23) plane
632636
633637 IF (CDOF_I(2 ) == ' 1' ) THEN
634- WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 2 , + WTi(J )* DZI(J)/ WT
638+ WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 2 , + WTi6(J, 1 )* DZI(J)
635639 ITERM_RMG = ITERM_RMG + 1
636640 ENDIF
637641
638642 IF (CDOF_I(3 ) == ' 1' ) THEN
639- WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 3 , - WTi(J )* DYI(J)/ WT
643+ WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 3 , - WTi6(J, 1 )* DYI(J)
640644 ITERM_RMG = ITERM_RMG + 1
641645 ENDIF
642646
643647 ELSE IF (I == 5 ) THEN ! Rotation about y, i.e. in zx (31) plane
644648
645649 IF (CDOF_I(1 ) == ' 1' ) THEN
646- WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 1 , - WTi(J )* DZI(J)/ WT
650+ WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 1 , - WTi6(J, 2 )* DZI(J)
647651 ITERM_RMG = ITERM_RMG + 1
648652 ENDIF
649653
650654 IF (CDOF_I(3 ) == ' 1' ) THEN
651- WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 3 , + WTi(J )* DXI(J)/ WT
655+ WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 3 , + WTi6(J, 2 )* DXI(J)
652656 ITERM_RMG = ITERM_RMG + 1
653657 ENDIF
654658
655659 ELSE IF (I == 6 ) THEN ! Rotation about z, i.e. in xy (12) plane
656660
657661 IF (CDOF_I(1 ) == ' 1' ) THEN
658- WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 1 , + WTi(J )* DYI(J)/ WT
662+ WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 1 , + WTi6(J, 3 )* DYI(J)
659663 ITERM_RMG = ITERM_RMG + 1
660664 ENDIF
661665
662666 IF (CDOF_I(2 ) == ' 1' ) THEN
663- WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 2 , - WTi(J )* DXI(J)/ WT
667+ WRITE (L1J) RMG_ROW_NUM, (RMG_COL_NUM_START-1 )+ 2 , - WTi6(J, 3 )* DXI(J)
664668 ITERM_RMG = ITERM_RMG + 1
665669 ENDIF
666670
0 commit comments