60 integer,
parameter,
private :: kreal = kind(0.0d0)
117 integer,
intent(in) :: etype
131 integer,
intent(in) :: etype
168 integer,
intent(in) :: etype
192 subroutine getsubface( intype, innumber, outtype, nodes )
193 integer,
intent(in) :: intype
194 integer,
intent(in) :: innumber
195 integer,
intent(out) :: outtype
196 integer,
intent(out) :: nodes(:)
199 select case ( intype )
202 select case ( innumber )
204 nodes(1)=1; nodes(2)=2; nodes(3)=3
206 nodes(1)=4; nodes(2)=2; nodes(3)=1
208 nodes(1)=4; nodes(2)=3; nodes(3)=2
210 nodes(1)=4; nodes(2)=1; nodes(3)=3
214 select case ( innumber )
216 nodes(1)=1; nodes(2)=2; nodes(3)=3
217 nodes(4)=5; nodes(5)=6; nodes(6)=7
219 nodes(1)=4; nodes(2)=2; nodes(3)=1
220 nodes(4)=9; nodes(5)=5; nodes(6)=8
222 nodes(1)=4; nodes(2)=3; nodes(3)=2
223 nodes(4)=10; nodes(5)=6; nodes(6)=9
225 nodes(1)=4; nodes(2)=1; nodes(3)=3
226 nodes(4)=8; nodes(5)=7; nodes(6)=10
230 select case ( innumber )
232 nodes(1)=1; nodes(2)=2; nodes(3)=3
233 nodes(4)=5; nodes(5)=6; nodes(6)=7
235 nodes(1)=4; nodes(2)=2; nodes(3)=1
236 nodes(4)=9; nodes(5)=5; nodes(6)=8
238 nodes(1)=4; nodes(2)=3; nodes(3)=2
239 nodes(4)=10; nodes(5)=6; nodes(6)=9
241 nodes(1)=4; nodes(2)=1; nodes(3)=3
242 nodes(4)=8; nodes(5)=7; nodes(6)=10
246 select case ( innumber )
248 nodes(1)=1; nodes(2)=2; nodes(3)=3; nodes(4)=4
250 nodes(1)=8; nodes(2)=7; nodes(3)=6; nodes(4)=5
252 nodes(1)=5; nodes(2)=6; nodes(3)=2; nodes(4)=1
254 nodes(1)=6; nodes(2)=7; nodes(3)=3; nodes(4)=2
256 nodes(1)=7; nodes(2)=8; nodes(3)=4; nodes(4)=3
258 nodes(1)=8; nodes(2)=5; nodes(3)=1; nodes(4)=4
264 select case ( innumber )
266 nodes(1)=1; nodes(2)=2; nodes(3)=3; nodes(4)=4
267 nodes(5)=9; nodes(6)=10; nodes(7)=11; nodes(8)=12
269 nodes(1)=8; nodes(2)=7; nodes(3)=6; nodes(4)=5
270 nodes(5)=15; nodes(6)=14; nodes(7)=13; nodes(8)=16
272 nodes(1)=5; nodes(2)=6; nodes(3)=2; nodes(4)=1
273 nodes(5)=13; nodes(6)=18; nodes(7)=9; nodes(8)=17
275 nodes(1)=6; nodes(2)=7; nodes(3)=3; nodes(4)=2
276 nodes(5)=14; nodes(6)=19; nodes(7)=10; nodes(8)=18
278 nodes(1)=7; nodes(2)=8; nodes(3)=4; nodes(4)=3
279 nodes(5)=15; nodes(6)=20; nodes(7)=11; nodes(8)=19
281 nodes(1)=8; nodes(2)=5; nodes(3)=1; nodes(4)=4
282 nodes(5)=16; nodes(6)=17; nodes(7)=12; nodes(8)=20
287 select case ( innumber )
290 nodes(1)=1; nodes(2)=2; nodes(3)=3
293 nodes(1)=6; nodes(2)=5; nodes(3)=4
296 nodes(1)=4; nodes(2)=5; nodes(3)=2; nodes(4)=1
299 nodes(1)=5; nodes(2)=6; nodes(3)=3; nodes(4)=2
302 nodes(1)=6; nodes(2)=4; nodes(3)=1; nodes(4)=3
305 select case ( innumber )
308 nodes(1)=1; nodes(2)=2; nodes(3)=3
309 nodes(4)=7; nodes(5)=8; nodes(6)=9
312 nodes(1)=6; nodes(2)=5; nodes(3)=4
313 nodes(4)=11; nodes(5)=10; nodes(6)=12
316 nodes(1)=4; nodes(2)=5; nodes(3)=2; nodes(4)=1
317 nodes(5)=10; nodes(6)=14; nodes(7)=7; nodes(8)=13
320 nodes(1)=5; nodes(2)=6; nodes(3)=3; nodes(4)=2
321 nodes(5)=11; nodes(6)=15; nodes(7)=8; nodes(8)=14
324 nodes(1)=6; nodes(2)=4; nodes(3)=1; nodes(4)=3
325 nodes(5)=12; nodes(6)=13; nodes(7)=9; nodes(8)=15
329 select case (innumber )
331 nodes(1) = 1; nodes(2)=2
333 nodes(1) = 2; nodes(2)=3
335 nodes(1) = 3; nodes(2)=1
339 select case (innumber )
341 nodes(1) = 1; nodes(2)=2; nodes(3)=4
343 nodes(1) = 2; nodes(2)=3; nodes(3)=5
345 nodes(1) = 3; nodes(2)=1; nodes(3)=6
349 select case (innumber )
351 nodes(1) = 1; nodes(2)=2
353 nodes(1) = 2; nodes(2)=3
355 nodes(1) = 3; nodes(2)=4
357 nodes(1) = 4; nodes(2)=1
361 select case (innumber )
363 nodes(1) = 1; nodes(2)=2; nodes(3)=5
365 nodes(1) = 2; nodes(2)=3; nodes(3)=6
367 nodes(1) = 3; nodes(2)=4; nodes(3)=7
369 nodes(1) = 4; nodes(2)=1; nodes(3)=8
372 select case ( innumber )
375 nodes(1)=1; nodes(2)=2; nodes(3)=3
378 nodes(1)=6; nodes(2)=5; nodes(3)=4
381 nodes(1)=4; nodes(2)=5; nodes(3)=2; nodes(4)=1
384 nodes(1)=5; nodes(2)=6; nodes(3)=3; nodes(4)=2
387 nodes(1)=6; nodes(2)=4; nodes(3)=1; nodes(4)=3
391 select case ( innumber )
393 nodes(1)=1; nodes(2)=2; nodes(3)=3; nodes(4)=4
395 nodes(1)=8; nodes(2)=7; nodes(3)=6; nodes(4)=5
397 nodes(1)=5; nodes(2)=6; nodes(3)=2; nodes(4)=1
399 nodes(1)=6; nodes(2)=7; nodes(3)=3; nodes(4)=2
401 nodes(1)=7; nodes(2)=8; nodes(3)=4; nodes(4)=3
403 nodes(1)=8; nodes(2)=5; nodes(3)=1; nodes(4)=4
409 select case ( innumber )
411 nodes(1)=1; nodes(2)=2; nodes(3)=3
417 select case ( innumber )
419 nodes(1)=1; nodes(2)=2; nodes(3)=3
420 nodes(4)=4; nodes(5)=5; nodes(6)=6
426 select case ( innumber )
428 nodes(1)=1; nodes(2)=2; nodes(3)=3; nodes(4)=4
434 select case ( innumber )
436 nodes(1)=1; nodes(2)=2; nodes(3)=3; nodes(4)=4
437 nodes(5)=5; nodes(6)=6; nodes(7)=7; nodes(8)=8
443 stop
"element type not defined-sbs"
450 integer,
intent(in) :: fetype
483 stop
"element type not defined-np"
490 integer,
intent(in) :: fetype
491 integer,
intent(in) :: np
492 real(kind=kreal),
intent(out) :: pos(:)
529 stop
"element type not defined-qp"
534 real(kind=kreal)
function getweight( fetype, np )
536 integer,
intent(in) :: fetype
537 integer,
intent(in) :: np
578 integer,
intent(in) :: fetype
579 real(kind=kreal),
intent(in) :: localcoord(:)
580 real(kind=kreal),
intent(out) :: shapederiv(:,:)
616 stop
"Element type not defined-sde"
622 integer,
intent(in) :: fetype
623 real(kind=kreal),
intent(in) :: localcoord(:)
624 real(kind=kreal),
intent(out) :: shapederiv(:,:,:)
641 stop
"Cannot calculate second derivatives of shape function"
647 integer,
intent(in) :: fetype
648 real(kind=kreal),
intent(in) :: localcoord(:)
649 real(kind=kreal),
intent(out) :: func(:)
690 stop
"Element type not defined-sf"
701 integer,
intent(in) :: fetype
702 real(kind = kreal),
intent(out) :: nncoord(:, :)
706 select case( fetype )
725 stop
"Element type not defined-sde"
740 subroutine getglobalderiv( fetype, nn, localcoord, elecoord, det, gderiv )
741 integer,
intent(in) :: fetype
742 integer,
intent(in) :: nn
743 real(kind=kreal),
intent(in) :: localcoord(:)
744 real(kind=kreal),
intent(in) :: elecoord(:,:)
745 real(kind=kreal),
intent(out) :: det
746 real(kind=kreal),
intent(out) :: gderiv(:,:)
748 real(kind=kreal) :: dum, xj(3,3), xji(3,3), deriv(nn,3)
755 xj(1:2,1:2)=matmul( elecoord(1:2,1:nn), deriv(1:nn,1:2) )
756 det=xj(1,1)*xj(2,2)-xj(2,1)*xj(1,2)
757 if( det==0.d0 ) stop
"Math error in GetGlobalDeriv! Determinant==0.0"
759 xji(1,1)= xj(2,2)*dum
760 xji(1,2)=-xj(1,2)*dum
761 xji(2,1)=-xj(2,1)*dum
762 xji(2,2)= xj(1,1)*dum
765 xj(1:3,1:3)= matmul( elecoord(1:3,1:nn), deriv(1:nn,1:3) )
767 det=xj(1,1)*xj(2,2)*xj(3,3) &
768 +xj(2,1)*xj(3,2)*xj(1,3) &
769 +xj(3,1)*xj(1,2)*xj(2,3) &
770 -xj(3,1)*xj(2,2)*xj(1,3) &
771 -xj(2,1)*xj(1,2)*xj(3,3) &
772 -xj(1,1)*xj(3,2)*xj(2,3)
773 if( det==0.d0 ) stop
"Math error in GetGlobalDeriv! Determinant==0.0"
776 xji(1,1)=dum*( xj(2,2)*xj(3,3)-xj(3,2)*xj(2,3) )
777 xji(1,2)=dum*(-xj(1,2)*xj(3,3)+xj(3,2)*xj(1,3) )
778 xji(1,3)=dum*( xj(1,2)*xj(2,3)-xj(2,2)*xj(1,3) )
779 xji(2,1)=dum*(-xj(2,1)*xj(3,3)+xj(3,1)*xj(2,3) )
780 xji(2,2)=dum*( xj(1,1)*xj(3,3)-xj(3,1)*xj(1,3) )
781 xji(2,3)=dum*(-xj(1,1)*xj(2,3)+xj(2,1)*xj(1,3) )
782 xji(3,1)=dum*( xj(2,1)*xj(3,2)-xj(3,1)*xj(2,2) )
783 xji(3,2)=dum*(-xj(1,1)*xj(3,2)+xj(3,1)*xj(1,2) )
784 xji(3,3)=dum*( xj(1,1)*xj(2,2)-xj(2,1)*xj(1,2) )
787 gderiv(1:nn,1:nspace)=matmul( deriv(1:nn,1:nspace), xji(1:nspace,1:nspace) )
791 real(kind=kreal)
function getdeterminant( fetype, nn, localcoord, elecoord )
792 integer,
intent(in) :: fetype
793 integer,
intent(in) :: nn
794 real(kind=kreal),
intent(in) :: localcoord(:)
795 real(kind=kreal),
intent(in) :: elecoord(:,:)
797 real(kind=kreal) :: xj(3,3), deriv(nn,3)
804 xj(1:2,1:2)=matmul( elecoord(1:2,1:nn), deriv(1:nn,1:2) )
807 xj(1:3,1:3)= matmul( elecoord(1:3,1:nn), deriv(1:nn,1:3) )
809 +xj(2,1)*xj(3,2)*xj(1,3) &
810 +xj(3,1)*xj(1,2)*xj(2,3) &
811 -xj(3,1)*xj(2,2)*xj(1,3) &
812 -xj(2,1)*xj(1,2)*xj(3,3) &
813 -xj(1,1)*xj(3,2)*xj(2,3)
819 subroutine getjacobian( fetype, nn, localcoord, elecoord, det, jacobian, inverse )
820 integer,
intent(in) :: fetype
821 integer,
intent(in) :: nn
822 real(kind=kreal),
intent(in) :: localcoord(:)
823 real(kind=kreal),
intent(in) :: elecoord(:,:)
824 real(kind=kreal),
intent(out) :: det
825 real(kind=kreal),
intent(out) :: jacobian(:,:)
826 real(kind=kreal),
intent(out) :: inverse(:,:)
828 real(kind=kreal) :: dum, deriv(nn,3)
835 jacobian(1:2,1:2)=matmul( elecoord(1:2,1:nn), deriv(1:nn,1:2) )
836 det=jacobian(1,1)*jacobian(2,2)-jacobian(2,1)*jacobian(1,2)
837 if( det==0.d0 ) stop
"Math error in getJacobain! Determinant==0.0"
839 inverse(1,1)= jacobian(2,2)*dum
840 inverse(1,2)=-jacobian(1,2)*dum
841 inverse(2,1)=-jacobian(2,1)*dum
842 inverse(2,2)= jacobian(1,1)*dum
845 jacobian(1:3,1:3)= matmul( elecoord(1:3,1:nn), deriv(1:nn,1:3) )
847 det=jacobian(1,1)*jacobian(2,2)*jacobian(3,3) &
848 +jacobian(2,1)*jacobian(3,2)*jacobian(1,3) &
849 +jacobian(3,1)*jacobian(1,2)*jacobian(2,3) &
850 -jacobian(3,1)*jacobian(2,2)*jacobian(1,3) &
851 -jacobian(2,1)*jacobian(1,2)*jacobian(3,3) &
852 -jacobian(1,1)*jacobian(3,2)*jacobian(2,3)
853 if( det==0.d0 ) stop
"Math error in getJacobain! Determinant==0.0"
856 inverse(1,1)=dum*( jacobian(2,2)*jacobian(3,3)-jacobian(3,2)*jacobian(2,3) )
857 inverse(1,2)=dum*(-jacobian(1,2)*jacobian(3,3)+jacobian(3,2)*jacobian(1,3) )
858 inverse(1,3)=dum*( jacobian(1,2)*jacobian(2,3)-jacobian(2,2)*jacobian(1,3) )
859 inverse(2,1)=dum*(-jacobian(2,1)*jacobian(3,3)+jacobian(3,1)*jacobian(2,3) )
860 inverse(2,2)=dum*( jacobian(1,1)*jacobian(3,3)-jacobian(3,1)*jacobian(1,3) )
861 inverse(2,3)=dum*(-jacobian(1,1)*jacobian(2,3)+jacobian(2,1)*jacobian(1,3) )
862 inverse(3,1)=dum*( jacobian(2,1)*jacobian(3,2)-jacobian(3,1)*jacobian(2,2) )
863 inverse(3,2)=dum*(-jacobian(1,1)*jacobian(3,2)+jacobian(3,1)*jacobian(1,2) )
864 inverse(3,3)=dum*( jacobian(1,1)*jacobian(2,2)-jacobian(2,1)*jacobian(1,2) )
869 function surfacenormal( fetype, nn, localcoord, elecoord )
result( normal )
870 integer,
intent(in) :: fetype
871 integer,
intent(in) :: nn
872 real(kind=kreal),
intent(in) :: localcoord(2)
873 real(kind=kreal),
intent(in) :: elecoord(3,nn)
874 real(kind=kreal) :: normal(3)
875 real(kind=kreal) :: deriv(nn,2), gderiv(3,2)
896 gderiv = matmul( elecoord, deriv )
897 normal(1) = gderiv(2,1)*gderiv(3,2) - gderiv(3,1)*gderiv(2,2)
898 normal(2) = gderiv(3,1)*gderiv(1,2) - gderiv(1,1)*gderiv(3,2)
899 normal(3) = gderiv(1,1)*gderiv(2,2) - gderiv(2,1)*gderiv(1,2)
904 function edgenormal( fetype, nn, localcoord, elecoord )
result( normal )
905 integer,
intent(in) :: fetype
906 integer,
intent(in) :: nn
907 real(kind=kreal),
intent(in) :: localcoord(1)
908 real(kind=kreal),
intent(in) :: elecoord(2,nn)
909 real(kind=kreal) :: normal(2)
910 real(kind=kreal) :: deriv(nn,1), gderiv(2,1)
925 gderiv = matmul( elecoord, deriv )
926 normal(1) = -gderiv(2,1)
927 normal(2) = gderiv(1,1)
932 subroutine tangentbase( fetype, nn, localcoord, elecoord, tangent )
933 integer,
intent(in) :: fetype
934 integer,
intent(in) :: nn
935 real(kind=kreal),
intent(in) :: localcoord(2)
936 real(kind=kreal),
intent(in) :: elecoord(3,nn)
937 real(kind=kreal),
intent(out) :: tangent(3,2)
938 real(kind=kreal) :: deriv(nn,2)
962 tangent = matmul( elecoord, deriv )
966 subroutine curvature( fetype, nn, localcoord, elecoord, l2ndderiv, normal, curv )
967 integer,
intent(in) :: fetype
968 integer,
intent(in) :: nn
969 real(kind=kreal),
intent(in) :: localcoord(2)
970 real(kind=kreal),
intent(in) :: elecoord(3,nn)
971 real(kind=kreal),
intent(out) :: l2ndderiv(3,2,2)
972 real(kind=kreal),
intent(in),
optional :: normal(3)
973 real(kind=kreal),
intent(out),
optional :: curv(2,2)
974 real(kind=kreal) :: deriv2(nn,2,2)
995 stop
"Cannot calculate second derivatives of shape function"
998 l2ndderiv(1:3,1,1) = matmul( elecoord(1:3,1:nn), deriv2(1:nn,1,1) )
999 l2ndderiv(1:3,1,2) = matmul( elecoord(1:3,1:nn), deriv2(1:nn,1,2) )
1000 l2ndderiv(1:3,2,1) = matmul( elecoord(1:3,1:nn), deriv2(1:nn,2,1) )
1001 l2ndderiv(1:3,2,2) = matmul( elecoord(1:3,1:nn), deriv2(1:nn,2,2) )
1002 if(
present(curv) )
then
1003 curv(1,1) = dot_product( l2ndderiv(:,1,1), normal(:) )
1004 curv(1,2) = dot_product( l2ndderiv(:,1,2), normal(:) )
1005 curv(2,1) = dot_product( l2ndderiv(:,2,1), normal(:) )
1006 curv(2,2) = dot_product( l2ndderiv(:,2,2), normal(:) )
1012 integer,
intent(in) :: fetype
1013 real(kind=kreal),
intent(out) :: localcoord(2)
1015 select case (fetype)
1017 localcoord(:) = 1.d0/3.d0
1019 localcoord(:) = 0.d0
1022 localcoord(:) = 0.d0
1029 integer,
intent(in) :: fetype
1030 real(kind=kreal),
intent(inout) :: localcoord(2)
1031 real(kind=kreal),
optional :: clearance
1032 real(kind=kreal) :: clr, coord3
1035 if(
present(clearance) ) clr = clearance
1036 if( dabs(localcoord(1))<clr ) localcoord(1)=0.d0
1037 if( dabs(localcoord(2))<clr ) localcoord(2)=0.d0
1038 if( dabs(dabs(localcoord(1))-1.d0)<clr ) &
1039 localcoord(1)=sign(1.d0,localcoord(1))
1040 if( dabs(dabs(localcoord(2))-1.d0)<clr ) &
1041 localcoord(2)=sign(1.d0,localcoord(2))
1043 select case (fetype)
1046 coord3 = 1.d0-(localcoord(1)+localcoord(2))
1047 if( dabs(coord3)<clr ) coord3=0.d0
1048 if( localcoord(1)>=0.d0 .and. localcoord(1)<=1.d0 .and. &
1049 localcoord(2)>=0.d0 .and. localcoord(2)<=1.d0 .and. &
1050 coord3>=0.d0 .and. coord3<=1.d0 )
then
1052 if( localcoord(1)==1.d0 )
then
1054 elseif( localcoord(2)==1.d0 )
then
1056 elseif( coord3==1.d0 )
then
1058 elseif( coord3==0.d0 )
then
1060 elseif( localcoord(1)==0.d0 )
then
1062 elseif( localcoord(2)==0.d0 )
then
1068 if( all(dabs(localcoord)<=1.d0) )
then
1070 if( localcoord(1)==-1.d0 .and. localcoord(2)==-1.d0 )
then
1072 elseif( localcoord(1)==1.d0 .and. localcoord(2)==-1.d0 )
then
1074 elseif( localcoord(1)==1.d0 .and. localcoord(2)==1.d0 )
then
1076 elseif( localcoord(1)==-1.d0 .and. localcoord(2)==1.d0 )
then
1078 elseif( localcoord(2)==-1.d0 )
then
1080 elseif( localcoord(1)==1.d0 )
then
1082 elseif( localcoord(2)==1.d0 )
then
1084 elseif( localcoord(1)==-1.d0 )
then
1094 integer,
intent(in) :: fetype
1095 real(kind=kreal),
intent(inout) :: localcoord(3)
1096 real(kind=kreal),
optional :: clearance
1097 real(kind=kreal) :: clr, coord4
1102 if(
present(clearance) ) clr = clearance
1104 if( dabs(localcoord(idof))<clr ) localcoord(idof)=0.d0
1105 if( dabs(dabs(localcoord(idof))-1.d0)<clr ) &
1106 & localcoord(idof)=sign(1.d0,localcoord(idof))
1110 select case (fetype)
1113 coord4 = 1.d0-(localcoord(1)+localcoord(2)+localcoord(3))
1114 if( dabs(coord4)<clr ) coord4=0.d0
1117 if( localcoord(idof) < 0.d0 .or. localcoord(idof) > 1.d0 )
isinside3delement = -1
1122 coord4 = 1.d0-(localcoord(1)+localcoord(2))
1125 if( localcoord(idof) < 0.d0 .or. localcoord(idof) > 1.d0 )
isinside3delement = -1
1136 integer,
intent(in) :: fetype
1137 integer,
intent(in) :: cnode
1138 real(kind=kreal),
intent(out) :: localcoord(2)
1140 select case (fetype)
1145 elseif( cnode==2 )
then
1154 localcoord(1) =-1.d0
1155 localcoord(2) =-1.d0
1156 elseif( cnode==2 )
then
1158 localcoord(2) =-1.d0
1159 elseif( cnode==3 )
then
1163 localcoord(1) =-1.d0
1171 real(kind=kreal),
intent(in) :: lpos(:)
1172 integer,
intent(in) :: fetype
1173 integer,
intent(in) :: nnode
1174 real(kind=kreal),
intent(in) :: pvalue(:)
1175 real(kind=kreal),
intent(out) :: ndvalue(:,:)
1178 real(kind=kreal) :: shapefunc(nnode)
1181 ndvalue(i,:) = shapefunc(i)*pvalue(:)
1187 real(kind=kreal),
intent(in) :: lpos(:)
1188 integer,
intent(in) :: fetype
1189 integer,
intent(in) :: nnode
1190 real(kind=kreal),
intent(out) :: pvalue(:)
1191 real(kind=kreal),
intent(in) :: ndvalue(:,:)
1194 real(kind=kreal) :: shapefunc(nnode)
1198 pvalue(:) = pvalue(:)+ shapefunc(i)*ndvalue(i,:)
1203 subroutine gauss2node( fetype, gaussv, nodev )
1204 integer,
intent(in) :: fetype
1205 real(kind=kreal),
intent(in) :: gaussv(:,:)
1206 real(kind=kreal),
intent(out) :: nodev(:,:)
1208 integer :: i, ngauss, nnode
1209 real(kind=kreal) :: localcoord(3), func(100)
1213 select case (fetype)
1217 nodev(i,:) = gaussv(1,:)
1236 nodev(i,:) = gaussv(1,:)
1239 nodev(i+3,:) = gaussv(2,:)
1246 nodev(i,:) = gaussv(1,:)
1252 stop
"Element type not defined"
1259 integer,
intent(in) :: fetype
1260 integer,
intent(in) :: nn
1261 real(kind=kreal),
intent(in) :: localcoord(2)
1262 real(kind=kreal),
intent(in) :: elecoord(3,nn)
1263 real(kind=kreal) :: detjxy, detjyz, detjxz, detj
1264 detjxy =
getdeterminant( fetype, nn, localcoord, elecoord(1:2,1:nn) )
1265 detjyz =
getdeterminant( fetype, nn, localcoord, elecoord(2:3,1:nn) )
1266 detjxz =
getdeterminant( fetype, nn, localcoord, elecoord(1:3:2,1:nn) )
1267 detj = dsqrt( detjxy **2 + detjyz **2 + detjxz **2 )