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