845
846
847
848#include "implicit_f.inc"
849
850
851
852#include "mvsiz_p.inc"
853
854
855
856 INTEGER LLT
857
859 . dxdr(mvsiz), dydr(mvsiz), dzdr(mvsiz),
860 . dxdt(mvsiz), dydt(mvsiz), dzdt(mvsiz),
861 . drdx(mvsiz), dsdx(mvsiz), dtdx(mvsiz),
862 . drdy(mvsiz), dsdy(mvsiz), dtdy(mvsiz),
863 . drdz(mvsiz), dsdz(mvsiz), dtdz(mvsiz),
864 . xx(mvsiz,17) ,yy(mvsiz,17),zz(mvsiz,17),
865 . ni(mvsiz,17) ,rr(mvsiz) ,ss(mvsiz) ,tt(mvsiz)
866
867
868
869 INTEGER I
871 . dxds(mvsiz), dyds(mvsiz), dzds(mvsiz),
872 . dnidr(16),dnids(16),dnidt(16),
873 . d, det(mvsiz)
875 . u_m_r,u_p_r,u_m_s,u_p_s,u_m_t,u_p_t,
876 . ums_umt,ums_upt,ups_umt,ups_upt,
877 . umr_ums,umr_ups,upr_ums,upr_ups,
878 . umt_umr,umt_upr,upt_umr,upt_upr,
879 . a,r05,s05,t05
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942 DO i=1,llt
943 r05 = half*rr(i)
944 s05 = half*ss(i)
945 t05 = half*tt(i)
946
947 u_m_r = half - r05
948 u_p_r = half + r05
949
950 u_m_s = half - s05
951 u_p_s = half + s05
952
953 u_m_t = half - t05
954 u_p_t = half + t05
955
956 ums_umt = u_m_s * u_m_t
957 ums_upt = u_m_s * u_p_t
958 ups_umt = u_p_s * u_m_t
959 ups_upt = u_p_s * u_p_t
960
961 umr_ums = u_m_r * u_m_s
962 umr_ups = u_m_r * u_p_s
963 upr_ums = u_p_r * u_m_s
964 upr_ups = u_p_r * u_p_s
965
966 umt_umr = u_m_t * u_m_r
967 umt_upr = u_m_t * u_p_r
968 upt_umr = u_p_t * u_m_r
969 upt_upr = u_p_t * u_p_r
970
971 a = -rr(i)-tt(i)-one
972 ni(i,1) = u_m_r * ums_umt * a
973 ni(i,5) = u_m_r * ups_umt * a
974 a = -rr(i)+tt(i)-one
975 ni(i,2) = u_m_r * ums_upt * a
976 ni(i,6) = u_m_r * ups_upt * a
977 a = rr(i)+tt(i)-one
978 ni(i,3) = u_p_r * ums_upt * a
979 ni(i,7) = u_p_r * ups_upt * a
980 a = rr(i)-tt(i)-one
981 ni(i,4) = u_p_r * ums_umt * a
982 ni(i,8) = u_p_r * ups_umt * a
983
984 a = -t05 - rr(i)
985 dnidr(1) = -ums_umt * a
986 dnidr(5) = -ups_umt * a
987 a = t05 - rr(i)
988 dnidr(2) = -ums_upt * a
989 dnidr(6) = -ups_upt * a
990 a = t05 + rr(i)
991 dnidr(3) = ums_upt * a
992 dnidr(7) = ups_upt * a
993 a = -t05 + rr(i)
994 dnidr(4) = ums_umt * a
995 dnidr(8) = ups_umt * a
996
997 a = -r05 - u_p_t
998 dnids(1) = -umt_umr * a
999 dnids(5) = umt_umr * a
1000 a = -r05 - u_m_t
1001 dnids(2) = -upt_umr * a
1002 dnids(6) = upt_umr * a
1003 a = r05 - u_m_t
1004 dnids(3) = -upt_upr * a
1005 dnids(7) = upt_upr * a
1006 a = r05 - u_p_t
1007 dnids(4) = -umt_upr * a
1008 dnids(8) = umt_upr * a
1009
1010 a = -r05 - tt(i)
1011 dnidt(1) = -umr_ums * a
1012 dnidt(5) = -umr_ups * a
1013 a = -r05 + tt(i)
1014 dnidt(2) = umr_ums * a
1015 dnidt(6) = umr_ups * a
1016 a = +r05 + tt(i)
1017 dnidt(3) = upr_ums * a
1018 dnidt(7) = upr_ups * a
1019 a = +r05 - tt(i)
1020 dnidt(4) = -upr_ums * a
1021 dnidt(8) = -upr_ups * a
1022
1023 a = (one-rr(i)*rr(i))
1024 ni(i,10) = a * ums_upt
1025 ni(i,12) = a * ums_umt
1026 ni(i,14) = a * ups_upt
1027 ni(i,16) = a * ups_umt
1028
1029 a = half*a
1030 dnidt(10) = a * u_m_s
1031 dnidt(14) = a * u_p_s
1032 dnids(10) = -a * u_p_t
1033 dnids(12) = -a * u_m_t
1034
1035 a = -two*rr(i)
1036 dnidr(10) = a * ums_upt
1037 dnidr(12) = a * ums_umt
1038 dnidr(14) = a * ups_upt
1039 dnidr(16) = a * ups_umt
1040
1041 a = (one-tt(i)*tt(i))
1042 ni(i,9) = a * umr_ums
1043 ni(i,11) = a * upr_ums
1044 ni(i,13) = a * umr_ups
1045 ni(i,15) = a * upr_ups
1046
1047 ni(i,17) = -one
1048
1049 a = half*a
1050 dnidr(9) = -a * u_m_s
1051 dnidr(13) = -a * u_p_s
1052
1053 dnids(9) = -a * u_m_r
1054 dnids(11) = -a * u_p_r
1055
1056 a = -two*tt(i)
1057 dnidt(9) = a * umr_ums
1058 dnidt(11) = a * upr_ums
1059 dnidt(13) = a * umr_ups
1060 dnidt(15) = a * upr_ups
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070 dxdr(i) = dnidr(1)*xx(i,1) + dnidr(2)*xx(i,2) + dnidr(3)*xx(i,3)
1071 + + dnidr(4)*xx(i,4) + dnidr(5)*xx(i,5) + dnidr(6)*xx(i,6)
1072 + + dnidr(7)*xx(i,7) + dnidr(8)*xx(i,8)
1073 + + dnidr(9)*(xx(i,9) - xx(i,11)) + dnidr(10)*xx(i,10)
1074 + + dnidr(12)*xx(i,12) + dnidr(13)*(xx(i,13) - xx(i,15))
1075 + + dnidr(14)*xx(i,14) + dnidr(16)*xx(i,16)
1076
1077 dxds(i) = dnids(1)*xx(i,1) + dnids(2)*xx(i,2) + dnids(3)*xx(i,3)
1078 + + dnids(4)*xx(i,4) + dnids(5)*xx(i,5) + dnids(6)*xx(i,6)
1079 + + dnids(7)*xx(i,7) + dnids(8)*xx(i,8)
1080 + + dnids(9)* (xx(i,9) - xx(i,13))
1081 + + dnids(10)*(xx(i,10) - xx(i,14))
1082 + + dnids(11)*(xx(i,11) - xx(i,15))
1083 + + dnids(12)*(xx(i,12) - xx(i,16))
1084
1085 dxdt(i) = dnidt(1)*xx(i,1) + dnidt(2)*xx(i,2) + dnidt(3)*xx(i,3)
1086 + + dnidt(4)*xx(i,4) + dnidt(5)*xx(i,5) + dnidt(6)*xx(i,6)
1087 + + dnidt(7)*xx(i,7) + dnidt(8)*xx(i,8)
1088 + + dnidt(9)*xx(i,9) + dnidt(10)*(xx(i,10) - xx(i,12))
1089 + + dnidt(11)*xx(i,11) + dnidt(13)*xx(i,13)
1090 + + dnidt(14)*(xx(i,14) - xx(i,16)) + dnidt(15)*xx(i,15)
1091
1092
1093
1094 dydr(i) = dnidr(1)*yy(i,1) + dnidr(2)*yy(i,2) + dnidr(3)*yy(i,3)
1095 + + dnidr(4)*yy(i,4) + dnidr(5)*yy(i,5) + dnidr(6)*yy(i,6)
1096 + + dnidr(7)*yy(i,7) + dnidr(8)*yy(i,8)
1097 + + dnidr(9)*(yy(i,9) - yy(i,11)) + dnidr(10)*yy(i,10)
1098 + + dnidr(12)*yy(i,12) + dnidr(13)*(yy(i,13) - yy(i,15))
1099 + + dnidr(14)*yy(i,14) + dnidr(16)*yy(i,16)
1100
1101 dyds(i) = dnids(1)*yy(i,1) + dnids(2)*yy(i,2) + dnids(3)*yy(i,3)
1102 + + dnids(4)*yy(i,4) + dnids(5)*yy(i,5) + dnids(6)*yy(i,6)
1103 + + dnids(7)*yy(i,7) + dnids(8)*yy(i,8)
1104 + + dnids(9)* (yy(i,9) - yy(i,13))
1105 + + dnids(10)*(yy(i,10) - yy(i,14))
1106 + + dnids(11)*(yy(i,11) - yy(i,15))
1107 + + dnids(12)*(yy(i,12) - yy(i,16))
1108
1109 dydt(i) = dnidt(1)*yy(i,1) + dnidt(2)*yy(i,2) + dnidt(3)*yy(i,3)
1110 + + dnidt(4)*yy(i,4) + dnidt(5)*yy(i,5) + dnidt(6)*yy(i,6)
1111 + + dnidt(7)*yy(i,7) + dnidt(8)*yy(i,8)
1112 + + dnidt(9)*yy(i,9) + dnidt(10)*(yy(i,10) - yy(i,12))
1113 + + dnidt(11)*yy(i,11) + dnidt(13)*yy(i,13)
1114 + + dnidt(14)*(yy(i,14) - yy(i,16)) + dnidt(15)*yy(i,15)
1115
1116
1117
1118 dzdr(i) = dnidr(1)*zz(i,1) + dnidr(2)*zz(i,2) + dnidr(3)*zz(i,3)
1119 + + dnidr(4)*zz(i,4) + dnidr(5)*zz(i,5) + dnidr(6)*zz(i,6)
1120 + + dnidr(7)*zz(i,7) + dnidr(8)*zz(i,8)
1121 + + dnidr(9)*(zz(i,9) - zz(i,11)) + dnidr(10)*zz(i,10)
1122 + + dnidr(12)*zz(i,12) + dnidr(13)*(zz(i,13) - zz(i,15))
1123 + + dnidr(14)*zz(i,14) + dnidr(16)*zz(i,16)
1124
1125 dzds(i) = dnids(1)*zz(i,1) + dnids(2)*zz(i,2) + dnids(3)*zz(i,3)
1126 + + dnids(4)*zz(i,4) + dnids(5)*zz(i,5) + dnids(6)*zz(i,6)
1127 + + dnids(7)*zz(i,7) + dnids(8)*zz(i,8)
1128 + + dnids(9)* (zz(i,9) - zz(i,13))
1129 + + dnids(10)*(zz(i,10) - zz(i,14))
1130 + + dnids(11)*(zz(i,11) - zz(i,15))
1131 + + dnids(12)*(zz(i,12) - zz(i,16))
1132
1133 dzdt(i) = dnidt(1)*zz(i,1) + dnidt(2)*zz(i,2) + dnidt(3)*zz(i,3)
1134 + + dnidt(4)*zz(i,4) + dnidt(5)*zz(i,5) + dnidt(6)*zz(i,6)
1135 + + dnidt(7)*zz(i,7) + dnidt(8)*zz(i,8)
1136 + + dnidt(9)*zz(i,9) + dnidt(10)*(zz(i,10) - zz(i,12))
1137 + + dnidt(11)*zz(i,11) + dnidt(13)*zz(i,13)
1138 + + dnidt(14)*(zz(i,14) - zz(i,16)) + dnidt(15)*zz(i,15)
1139
1140
1141
1142
1143 drdx(i)=dyds(i)*dzdt(i)-dzds(i)*dydt(i)
1144 drdy(i)=dzds(i)*dxdt(i)-dxds(i)*dzdt(i)
1145 drdz(i)=dxds(i)*dydt(i)-dyds(i)*dxdt(i)
1146
1147 dsdz(i)=dxdt(i)*dydr(i)-dydt(i)*dxdr(i)
1148 dsdy(i)=dzdt(i)*dxdr(i)-dxdt(i)*dzdr(i)
1149 dsdx(i)=dydt(i)*dzdr(i)-dzdt(i)*dydr(i)
1150
1151 dtdx(i)=dydr(i)*dzds(i)-dzdr(i)*dyds(i)
1152 dtdy(i)=dzdr(i)*dxds(i)-dxdr(i)*dzds(i)
1153 dtdz(i)=dxdr(i)*dyds(i)-dydr(i)*dxds(i)
1154
1155 det(i) = dxdr(i) * drdx(i)
1156 . + dydr(i) * drdy(i)
1157 . + dzdr(i) * drdz(i)
1158
1159
1160
1161
1162
1163
1164
1165 ENDDO
1166
1167 DO i=1,llt
1168
1169
1170
1171
1172 d = one/det(i)
1173 drdx(i)=d*drdx(i)
1174 dsdx(i)=d*dsdx(i)
1175 dtdx(i)=d*dtdx(i)
1176
1177 drdy(i)=d*drdy(i)
1178 dsdy(i)=d*dsdy(i)
1179 dtdy(i)=d*dtdy(i)
1180
1181 drdz(i)=d*drdz(i)
1182 dsdz(i)=d*dsdz(i)
1183 dtdz(i)=d*dtdz(i)
1184
1185
1186
1187
1188
1189
1190 ENDDO
1191
1192 RETURN