@@ -86,7 +86,7 @@ SUBROUTINE GET_QUAD_COORDS
8686
8787! Parametric coords of points are in array XEP. They are obtained from the corner node coords in array XEL from:
8888
89- ! XEA = PSH_MAT* XEL
89+ ! XEA = PSH_MAT^T * XEL
9090
9191! The terms in PSH_MAT are the shape functions from the PSH rows from subr SHP2DQ for each of the 4 XEP points.
9292
@@ -101,22 +101,22 @@ SUBROUTINE GET_QUAD_COORDS
101101 REAL (DOUBLE) :: DPSHG(2 ,ELGP) ! Derivatives of PSH wrt elem isopar coords (not used here).
102102
103103 ! 4x4 matrix used to calc Gauss pt coords from node coords
104- REAL (DOUBLE) :: PSH_MAT(IORD* IORD,ELGP )
104+ REAL (DOUBLE) :: PSH_MAT(ELGP, IORD* IORD)
105105
106106! **********************************************************************************************************************************
107107
108- ! The PSH_MAT rows are from subr SHP2DQ for each of the 4 XEP parametric coord points for the element.
108+ ! The PSH_MAT columns are from subr SHP2DQ for each of the 4 XEP parametric coord points for the element.
109109! We want the XEA orderd in the same fashion as the element node coords in XEL (namely 1-2-3-4 clockwise around the element).
110110
111- CALL SHP2DQ ( 1 , 1 , ELGP, SUBR_NAME, ' ' , IORD, XEP(1 ,1 ), XEP(1 ,2 ), ' Y' , PSH_MAT(1 ,: ), DPSHG )
112- CALL SHP2DQ ( 2 , 1 , ELGP, SUBR_NAME, ' ' , IORD, XEP(2 ,1 ), XEP(2 ,2 ), ' Y' , PSH_MAT(2 ,: ), DPSHG )
113- CALL SHP2DQ ( 2 , 2 , ELGP, SUBR_NAME, ' ' , IORD, XEP(3 ,1 ), XEP(3 ,2 ), ' Y' , PSH_MAT(3 ,: ), DPSHG )
114- CALL SHP2DQ ( 1 , 2 , ELGP, SUBR_NAME, ' ' , IORD, XEP(4 ,1 ), XEP(4 ,2 ), ' Y' , PSH_MAT(4 ,: ), DPSHG )
111+ CALL SHP2DQ ( 1 , 1 , ELGP, SUBR_NAME, ' ' , IORD, XEP(1 ,1 ), XEP(1 ,2 ), ' Y' , PSH_MAT(:, 1 ), DPSHG )
112+ CALL SHP2DQ ( 2 , 1 , ELGP, SUBR_NAME, ' ' , IORD, XEP(2 ,1 ), XEP(2 ,2 ), ' Y' , PSH_MAT(:, 2 ), DPSHG )
113+ CALL SHP2DQ ( 2 , 2 , ELGP, SUBR_NAME, ' ' , IORD, XEP(3 ,1 ), XEP(3 ,2 ), ' Y' , PSH_MAT(:, 3 ), DPSHG )
114+ CALL SHP2DQ ( 1 , 2 , ELGP, SUBR_NAME, ' ' , IORD, XEP(4 ,1 ), XEP(4 ,2 ), ' Y' , PSH_MAT(:, 4 ), DPSHG )
115115
116116
117117! Multiply shape functions by grid point coordinates to get Gauss point coordinates
118118! Only the first ELGP rows of XEL are used because it may have additional unused rows.
119- CALL MATMULT_FFF ( PSH_MAT, XEL(1 :ELGP,:), IORD* IORD, ELGP , 3 , XEA )
119+ CALL MATMULT_FFF_T ( PSH_MAT, XEL(1 :ELGP,:), ELGP, IORD* IORD, 3 , XEA )
120120
121121
122122! Debug output
0 commit comments