1! 2! CalculiX - A 3-dimensional finite element program 3! Copyright (C) 1998-2021 Guido Dhondt 4! 5! This program is free software; you can redistribute it and/or 6! modify it under the terms of the GNU General Public License as 7! published by the Free Software Foundation(version 2); 8! 9! 10! This program is distributed in the hope that it will be useful, 11! but WITHOUT ANY WARRANTY; without even the implied warranty of 12! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13! GNU General Public License for more details. 14! 15! You should have received a copy of the GNU General Public License 16! along with this program; if not, write to the Free Software 17! Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18! 19 subroutine orthonl(w,vo,elas,s,ii1,jj1,weight) 20! 21! This routine replaces the following lines in e_c3d.f for 22! an orthotropic material 23! 24! do i1=1,3 25! iii1=ii1+i1-1 26! do j1=1,3 27! jjj1=jj1+j1-1 28! do k1=1,3 29! do l1=1,3 30! s(iii1,jjj1)=s(iii1,jjj1) 31! & +anisox(i1,k1,j1,l1)*w(k1,l1) 32! do m1=1,3 33! s(iii1,jjj1)=s(iii1,jjj1) 34! & +anisox(i1,k1,m1,l1)*w(k1,l1) 35! & *vo(j1,m1) 36! & +anisox(m1,k1,j1,l1)*w(k1,l1) 37! & *vo(i1,m1) 38! do n1=1,3 39! s(iii1,jjj1)=s(iii1,jjj1) 40! & +anisox(m1,k1,n1,l1) 41! & *w(k1,l1)*vo(i1,m1)*vo(j1,n1) 42! enddo 43! enddo 44! enddo 45! enddo 46! enddo 47! enddo 48! 49 implicit none 50! 51 integer ii1,jj1 52! 53 real*8 w(3,3),vo(3,3),elas(21),s(60,60),weight 54! 55! 56! 57 s(ii1,jj1)=s(ii1,jj1)+((elas( 1)+elas( 1)*vo(1,1) 58 &+(elas( 1)+elas( 1)*vo(1,1) 59 &)*vo(1,1)+(elas( 7)*vo(1,2))*vo(1,2) 60 &+(elas( 8)*vo(1,3)) 61 &*vo(1,3))*w(1,1) 62 &+(elas( 2)*vo(1,2)+(elas( 2)*vo(1,2))*vo(1,1)+(elas( 7) 63 &+elas( 7)*vo(1,1))*vo(1,2) 64 &)*w(1,2) 65 &+(elas( 4)*vo(1,3)+(elas( 4)*vo(1,3))*vo(1,1) 66 &+(elas( 8)+elas( 8)*vo(1,1)) 67 &*vo(1,3))*w(1,3) 68 &+(elas( 7)*vo(1,2)+(elas( 7)*vo(1,2))*vo(1,1)+(elas( 2) 69 &+elas( 2)*vo(1,1))*vo(1,2) 70 &)*w(2,1) 71 &+(elas( 7)+elas( 7)*vo(1,1) 72 &+(elas( 7)+elas( 7)*vo(1,1) 73 &)*vo(1,1)+(elas( 3)*vo(1,2))*vo(1,2) 74 &+(elas( 9)*vo(1,3)) 75 &*vo(1,3))*w(2,2) 76 &+((elas( 5)*vo(1,3))*vo(1,2) 77 &+(elas( 9)*vo(1,2)) 78 &*vo(1,3))*w(2,3) 79 &+(elas( 8)*vo(1,3)+(elas( 8)*vo(1,3))*vo(1,1) 80 &+(elas( 4)+elas( 4)*vo(1,1)) 81 &*vo(1,3))*w(3,1) 82 &+((elas( 9)*vo(1,3))*vo(1,2) 83 &+(elas( 5)*vo(1,2)) 84 &*vo(1,3))*w(3,2) 85 &+(elas( 8)+elas( 8)*vo(1,1) 86 &+(elas( 8)+elas( 8)*vo(1,1) 87 &)*vo(1,1)+(elas( 9)*vo(1,2))*vo(1,2) 88 &+(elas( 6)*vo(1,3)) 89 &*vo(1,3))*w(3,3))*weight 90 s(ii1,jj1+1)=s(ii1,jj1+1)+((elas( 1)*vo(2,1) 91 &+(elas( 1)*vo(2,1) 92 &)*vo(1,1)+(elas( 7) 93 &+elas( 7)*vo(2,2))*vo(1,2) 94 &+(elas( 8)*vo(2,3)) 95 &*vo(1,3))*w(1,1) 96 &+(elas( 2) 97 &+elas( 2)*vo(2,2)+(elas( 2) 98 &+elas( 2)*vo(2,2))*vo(1,1)+(elas( 7)*vo(2,1))*vo(1,2) 99 &)*w(1,2) 100 &+(elas( 4)*vo(2,3)+(elas( 4)*vo(2,3))*vo(1,1) 101 &+(elas( 8)*vo(2,1)) 102 &*vo(1,3))*w(1,3) 103 &+(elas( 7) 104 &+elas( 7)*vo(2,2)+(elas( 7) 105 &+elas( 7)*vo(2,2))*vo(1,1)+(elas( 2)*vo(2,1))*vo(1,2) 106 &)*w(2,1) 107 &+(elas( 7)*vo(2,1) 108 &+(elas( 7)*vo(2,1) 109 &)*vo(1,1)+(elas( 3) 110 &+elas( 3)*vo(2,2))*vo(1,2) 111 &+(elas( 9)*vo(2,3)) 112 &*vo(1,3))*w(2,2) 113 &+((elas( 5)*vo(2,3))*vo(1,2) 114 &+(elas( 9)+elas( 9)*vo(2,2)) 115 &*vo(1,3))*w(2,3) 116 &+(elas( 8)*vo(2,3)+(elas( 8)*vo(2,3))*vo(1,1) 117 &+(elas( 4)*vo(2,1)) 118 &*vo(1,3))*w(3,1) 119 &+((elas( 9)*vo(2,3))*vo(1,2) 120 &+(elas( 5)+elas( 5)*vo(2,2)) 121 &*vo(1,3))*w(3,2) 122 &+(elas( 8)*vo(2,1) 123 &+(elas( 8)*vo(2,1) 124 &)*vo(1,1)+(elas( 9) 125 &+elas( 9)*vo(2,2))*vo(1,2) 126 &+(elas( 6)*vo(2,3)) 127 &*vo(1,3))*w(3,3))*weight 128 s(ii1,jj1+2)=s(ii1,jj1+2)+((elas( 1)*vo(3,1) 129 &+(elas( 1)*vo(3,1) 130 &)*vo(1,1)+(elas( 7)*vo(3,2))*vo(1,2) 131 &+(elas( 8)+elas( 8)*vo(3,3)) 132 &*vo(1,3))*w(1,1) 133 &+(elas( 2)*vo(3,2) 134 &+(elas( 2)*vo(3,2))*vo(1,1)+(elas( 7)*vo(3,1))*vo(1,2) 135 &)*w(1,2) 136 &+(elas( 4) 137 &+elas( 4)*vo(3,3)+(elas( 4) 138 &+elas( 4)*vo(3,3))*vo(1,1) 139 &+(elas( 8)*vo(3,1)) 140 &*vo(1,3))*w(1,3) 141 &+(elas( 7)*vo(3,2)+(elas( 7)*vo(3,2))*vo(1,1) 142 &+(elas( 2)*vo(3,1))*vo(1,2) 143 &)*w(2,1) 144 &+(elas( 7)*vo(3,1) 145 &+(elas( 7)*vo(3,1) 146 &)*vo(1,1)+(elas( 3)*vo(3,2))*vo(1,2) 147 &+(elas( 9)+elas( 9)*vo(3,3)) 148 &*vo(1,3))*w(2,2) 149 &+((elas( 5) 150 &+elas( 5)*vo(3,3))*vo(1,2) 151 &+(elas( 9)*vo(3,2)) 152 &*vo(1,3))*w(2,3) 153 &+(elas( 8) 154 &+elas( 8)*vo(3,3)+(elas( 8) 155 &+elas( 8)*vo(3,3))*vo(1,1) 156 &+(elas( 4)*vo(3,1)) 157 &*vo(1,3))*w(3,1) 158 &+((elas( 9) 159 &+elas( 9)*vo(3,3))*vo(1,2) 160 &+(elas( 5)*vo(3,2)) 161 &*vo(1,3))*w(3,2) 162 &+(elas( 8)*vo(3,1) 163 &+(elas( 8)*vo(3,1) 164 &)*vo(1,1)+(elas( 9)*vo(3,2))*vo(1,2) 165 &+(elas( 6)+elas( 6)*vo(3,3)) 166 &*vo(1,3))*w(3,3))*weight 167 s(ii1+1,jj1)=s(ii1+1,jj1)+((elas( 7)*vo(1,2) 168 &+(elas( 1)+elas( 1)*vo(1,1) 169 &)*vo(2,1)+(elas( 7)*vo(1,2))*vo(2,2) 170 &+(elas( 8)*vo(1,3)) 171 &*vo(2,3))*w(1,1) 172 &+(elas( 7)+elas( 7)*vo(1,1) 173 &+(elas( 2)*vo(1,2))*vo(2,1)+(elas( 7) 174 &+elas( 7)*vo(1,1))*vo(2,2) 175 &)*w(1,2) 176 &+((elas( 4)*vo(1,3))*vo(2,1) 177 &+(elas( 8)+elas( 8)*vo(1,1)) 178 &*vo(2,3))*w(1,3) 179 &+(elas( 2)+elas( 2)*vo(1,1) 180 &+(elas( 7)*vo(1,2))*vo(2,1)+(elas( 2) 181 &+elas( 2)*vo(1,1))*vo(2,2) 182 &)*w(2,1) 183 &+(elas( 3)*vo(1,2)+(elas( 7)+elas( 7)*vo(1,1) 184 &)*vo(2,1)+(elas( 3)*vo(1,2))*vo(2,2) 185 &+(elas( 9)*vo(1,3)) 186 &*vo(2,3))*w(2,2) 187 &+(elas( 5)*vo(1,3)+(elas( 5)*vo(1,3))*vo(2,2) 188 &+(elas( 9)*vo(1,2)) 189 &*vo(2,3))*w(2,3) 190 &+((elas( 8)*vo(1,3))*vo(2,1) 191 &+(elas( 4)+elas( 4)*vo(1,1)) 192 &*vo(2,3))*w(3,1) 193 &+(elas( 9)*vo(1,3)+(elas( 9)*vo(1,3))*vo(2,2) 194 &+(elas( 5)*vo(1,2)) 195 &*vo(2,3))*w(3,2) 196 &+(elas( 9)*vo(1,2)+(elas( 8)+elas( 8)*vo(1,1) 197 &)*vo(2,1)+(elas( 9)*vo(1,2))*vo(2,2) 198 &+(elas( 6)*vo(1,3)) 199 &*vo(2,3))*w(3,3))*weight 200 s(ii1+1,jj1+1)=s(ii1+1,jj1+1)+((elas( 7) 201 &+elas( 7)*vo(2,2)+(elas( 1)*vo(2,1) 202 &)*vo(2,1)+(elas( 7) 203 &+elas( 7)*vo(2,2))*vo(2,2) 204 &+(elas( 8)*vo(2,3)) 205 &*vo(2,3))*w(1,1) 206 &+(elas( 7)*vo(2,1) 207 &+(elas( 2) 208 &+elas( 2)*vo(2,2))*vo(2,1)+(elas( 7)*vo(2,1))*vo(2,2) 209 &)*w(1,2) 210 &+((elas( 4)*vo(2,3))*vo(2,1) 211 &+(elas( 8)*vo(2,1)) 212 &*vo(2,3))*w(1,3) 213 &+(elas( 2)*vo(2,1) 214 &+(elas( 7) 215 &+elas( 7)*vo(2,2))*vo(2,1)+(elas( 2)*vo(2,1))*vo(2,2) 216 &)*w(2,1) 217 &+(elas( 3) 218 &+elas( 3)*vo(2,2)+(elas( 7)*vo(2,1) 219 &)*vo(2,1)+(elas( 3) 220 &+elas( 3)*vo(2,2))*vo(2,2) 221 &+(elas( 9)*vo(2,3)) 222 &*vo(2,3))*w(2,2) 223 &+(elas( 5)*vo(2,3)+(elas( 5)*vo(2,3))*vo(2,2) 224 &+(elas( 9)+elas( 9)*vo(2,2)) 225 &*vo(2,3))*w(2,3) 226 &+((elas( 8)*vo(2,3))*vo(2,1) 227 &+(elas( 4)*vo(2,1)) 228 &*vo(2,3))*w(3,1) 229 &+(elas( 9)*vo(2,3)+(elas( 9)*vo(2,3))*vo(2,2) 230 &+(elas( 5)+elas( 5)*vo(2,2)) 231 &*vo(2,3))*w(3,2) 232 &+(elas( 9) 233 &+elas( 9)*vo(2,2)+(elas( 8)*vo(2,1) 234 &)*vo(2,1)+(elas( 9) 235 &+elas( 9)*vo(2,2))*vo(2,2) 236 &+(elas( 6)*vo(2,3)) 237 &*vo(2,3))*w(3,3))*weight 238 s(ii1+1,jj1+2)=s(ii1+1,jj1+2)+((elas( 7)*vo(3,2)+(elas( 1)*vo(3,1) 239 &)*vo(2,1)+(elas( 7)*vo(3,2))*vo(2,2) 240 &+(elas( 8)+elas( 8)*vo(3,3)) 241 &*vo(2,3))*w(1,1) 242 &+(elas( 7)*vo(3,1) 243 &+(elas( 2)*vo(3,2))*vo(2,1)+(elas( 7)*vo(3,1))*vo(2,2) 244 &)*w(1,2) 245 &+((elas( 4) 246 &+elas( 4)*vo(3,3))*vo(2,1) 247 &+(elas( 8)*vo(3,1)) 248 &*vo(2,3))*w(1,3) 249 &+(elas( 2)*vo(3,1) 250 &+(elas( 7)*vo(3,2))*vo(2,1)+(elas( 2)*vo(3,1))*vo(2,2) 251 &)*w(2,1) 252 &+(elas( 3)*vo(3,2)+(elas( 7)*vo(3,1) 253 &)*vo(2,1)+(elas( 3)*vo(3,2))*vo(2,2) 254 &+(elas( 9)+elas( 9)*vo(3,3)) 255 &*vo(2,3))*w(2,2) 256 &+(elas( 5) 257 &+elas( 5)*vo(3,3)+(elas( 5) 258 &+elas( 5)*vo(3,3))*vo(2,2) 259 &+(elas( 9)*vo(3,2)) 260 &*vo(2,3))*w(2,3) 261 &+((elas( 8) 262 &+elas( 8)*vo(3,3))*vo(2,1) 263 &+(elas( 4)*vo(3,1)) 264 &*vo(2,3))*w(3,1) 265 &+(elas( 9) 266 &+elas( 9)*vo(3,3)+(elas( 9) 267 &+elas( 9)*vo(3,3))*vo(2,2) 268 &+(elas( 5)*vo(3,2)) 269 &*vo(2,3))*w(3,2) 270 &+(elas( 9)*vo(3,2)+(elas( 8)*vo(3,1) 271 &)*vo(2,1)+(elas( 9)*vo(3,2))*vo(2,2) 272 &+(elas( 6)+elas( 6)*vo(3,3)) 273 &*vo(2,3))*w(3,3))*weight 274 s(ii1+2,jj1)=s(ii1+2,jj1)+((elas( 8)*vo(1,3) 275 &+(elas( 1)+elas( 1)*vo(1,1) 276 &)*vo(3,1)+(elas( 7)*vo(1,2))*vo(3,2) 277 &+(elas( 8)*vo(1,3)) 278 &*vo(3,3))*w(1,1) 279 &+((elas( 2)*vo(1,2))*vo(3,1)+(elas( 7) 280 &+elas( 7)*vo(1,1))*vo(3,2) 281 &)*w(1,2) 282 &+(elas( 8)+elas( 8)*vo(1,1) 283 &+(elas( 4)*vo(1,3))*vo(3,1) 284 &+(elas( 8)+elas( 8)*vo(1,1)) 285 &*vo(3,3))*w(1,3) 286 &+((elas( 7)*vo(1,2))*vo(3,1)+(elas( 2) 287 &+elas( 2)*vo(1,1))*vo(3,2) 288 &)*w(2,1) 289 &+(elas( 9)*vo(1,3)+(elas( 7)+elas( 7)*vo(1,1) 290 &)*vo(3,1)+(elas( 3)*vo(1,2))*vo(3,2) 291 &+(elas( 9)*vo(1,3)) 292 &*vo(3,3))*w(2,2) 293 &+(elas( 9)*vo(1,2)+(elas( 5)*vo(1,3))*vo(3,2) 294 &+(elas( 9)*vo(1,2)) 295 &*vo(3,3))*w(2,3) 296 &+(elas( 4)+elas( 4)*vo(1,1) 297 &+(elas( 8)*vo(1,3))*vo(3,1) 298 &+(elas( 4)+elas( 4)*vo(1,1)) 299 &*vo(3,3))*w(3,1) 300 &+(elas( 5)*vo(1,2)+(elas( 9)*vo(1,3))*vo(3,2) 301 &+(elas( 5)*vo(1,2)) 302 &*vo(3,3))*w(3,2) 303 &+(elas( 6)*vo(1,3)+(elas( 8)+elas( 8)*vo(1,1) 304 &)*vo(3,1)+(elas( 9)*vo(1,2))*vo(3,2) 305 &+(elas( 6)*vo(1,3)) 306 &*vo(3,3))*w(3,3))*weight 307 s(ii1+2,jj1+1)=s(ii1+2,jj1+1)+((elas( 8)*vo(2,3) 308 &+(elas( 1)*vo(2,1) 309 &)*vo(3,1)+(elas( 7) 310 &+elas( 7)*vo(2,2))*vo(3,2) 311 &+(elas( 8)*vo(2,3)) 312 &*vo(3,3))*w(1,1) 313 &+((elas( 2) 314 &+elas( 2)*vo(2,2))*vo(3,1)+(elas( 7)*vo(2,1))*vo(3,2) 315 &)*w(1,2) 316 &+(elas( 8)*vo(2,1) 317 &+(elas( 4)*vo(2,3))*vo(3,1) 318 &+(elas( 8)*vo(2,1)) 319 &*vo(3,3))*w(1,3) 320 &+((elas( 7) 321 &+elas( 7)*vo(2,2))*vo(3,1)+(elas( 2)*vo(2,1))*vo(3,2) 322 &)*w(2,1) 323 &+(elas( 9)*vo(2,3)+(elas( 7)*vo(2,1) 324 &)*vo(3,1)+(elas( 3) 325 &+elas( 3)*vo(2,2))*vo(3,2) 326 &+(elas( 9)*vo(2,3)) 327 &*vo(3,3))*w(2,2) 328 &+(elas( 9) 329 &+elas( 9)*vo(2,2)+(elas( 5)*vo(2,3))*vo(3,2) 330 &+(elas( 9)+elas( 9)*vo(2,2)) 331 &*vo(3,3))*w(2,3) 332 &+(elas( 4)*vo(2,1) 333 &+(elas( 8)*vo(2,3))*vo(3,1) 334 &+(elas( 4)*vo(2,1)) 335 &*vo(3,3))*w(3,1) 336 &+(elas( 5) 337 &+elas( 5)*vo(2,2)+(elas( 9)*vo(2,3))*vo(3,2) 338 &+(elas( 5)+elas( 5)*vo(2,2)) 339 &*vo(3,3))*w(3,2) 340 &+(elas( 6)*vo(2,3)+(elas( 8)*vo(2,1) 341 &)*vo(3,1)+(elas( 9) 342 &+elas( 9)*vo(2,2))*vo(3,2) 343 &+(elas( 6)*vo(2,3)) 344 &*vo(3,3))*w(3,3))*weight 345 s(ii1+2,jj1+2)=s(ii1+2,jj1+2)+((elas( 8) 346 &+elas( 8)*vo(3,3)+(elas( 1)*vo(3,1) 347 &)*vo(3,1)+(elas( 7)*vo(3,2))*vo(3,2) 348 &+(elas( 8)+elas( 8)*vo(3,3)) 349 &*vo(3,3))*w(1,1) 350 &+((elas( 2)*vo(3,2))*vo(3,1)+(elas( 7)*vo(3,1))*vo(3,2) 351 &)*w(1,2) 352 &+(elas( 8)*vo(3,1) 353 &+(elas( 4) 354 &+elas( 4)*vo(3,3))*vo(3,1) 355 &+(elas( 8)*vo(3,1)) 356 &*vo(3,3))*w(1,3) 357 &+((elas( 7)*vo(3,2))*vo(3,1)+(elas( 2)*vo(3,1))*vo(3,2) 358 &)*w(2,1) 359 &+(elas( 9) 360 &+elas( 9)*vo(3,3)+(elas( 7)*vo(3,1) 361 &)*vo(3,1)+(elas( 3)*vo(3,2))*vo(3,2) 362 &+(elas( 9)+elas( 9)*vo(3,3)) 363 &*vo(3,3))*w(2,2) 364 &+(elas( 9)*vo(3,2)+(elas( 5) 365 &+elas( 5)*vo(3,3))*vo(3,2) 366 &+(elas( 9)*vo(3,2)) 367 &*vo(3,3))*w(2,3) 368 &+(elas( 4)*vo(3,1) 369 &+(elas( 8) 370 &+elas( 8)*vo(3,3))*vo(3,1) 371 &+(elas( 4)*vo(3,1)) 372 &*vo(3,3))*w(3,1) 373 &+(elas( 5)*vo(3,2)+(elas( 9) 374 &+elas( 9)*vo(3,3))*vo(3,2) 375 &+(elas( 5)*vo(3,2)) 376 &*vo(3,3))*w(3,2) 377 &+(elas( 6) 378 &+elas( 6)*vo(3,3)+(elas( 8)*vo(3,1) 379 &)*vo(3,1)+(elas( 9)*vo(3,2))*vo(3,2) 380 &+(elas( 6)+elas( 6)*vo(3,3)) 381 &*vo(3,3))*w(3,3))*weight 382! 383 return 384 end 385