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 extrapolate_us3(yi,yn,ipkon,inum,kon,lakon,nfield,nk, 20 & ne,mi,ndim,orab,ielorien,co,iorienloc,cflag, 21 & vold,force,ielmat,thicke,ielprop,prop,i) 22! 23! extrapolates field values at the integration points to the 24! nodes for user element i of type us3 25! 26! the present routine is called for each user element of type us3; 27! routine to calculate inum(i) for nodes i belonging to shell 28! elements of type us3. This guarantees that the coordinates and 29! fields such as U, S or SNEG are stored for these nodes in the 30! frd-file. 31! 32! In this routine no extrapolation is done. For 'true' shell elements 33! the extrapolation is done in extrapolateshell_us3.f 34! 35! INPUT: 36! 37! yi(ndim,mi(1),*) value of the variables at the integration 38! points 39! yn(nfield,*) sum of the extrapolated variables at the nodes 40! from all elements treated previously 41! ipkon(i) points to the location in field kon preceding 42! the topology of element i 43! inum(i) < 0: node i is a network node 44! > 0: node i is a structural node; its value is 45! number of extrapolations performed to this 46! node so far 47! =0: node i is not used 48! kon(*) contains the topology of all elements. The 49! topology of element i starts at kon(ipkon(i)+1) 50! and continues until all nodes are covered. The 51! number of nodes depends on the element label 52! lakon(i) contains the label of element i 53! nfield number of variables to be extrapolated 54! nk maximum node number in the mesh 55! ne maximum element number in the mesh 56! ndim number of variables in the integration point 57! field to be extrapolated 58! orab(7,*) description of all local coordinate systems. 59! (cf. List of variables and their meaning in the 60! User's manual) 61! ielorien(i) orientation in element i 62! co(1..3,i) global coordinates of node i 63! iorienloc 0: extrapolated variables requested in global 64! coordinates 65! 1: extrapolated variables requested in local 66! coordinates 67! cflag (char*1) I: interpolate 3D results onto 1D/2D 68! E: store extrapolated 1D/2D results 69! M: store 1D section forces 70! blank: any other case 71! vold(j,i) value of variable j in node i at the end 72! of the previous iteration 73! force logical variable; if true the values to 74! be extrapolated are force values; important for 75! interpolation from 3D expanded structures on the 76! original 1D/2D structure: forces across the 77! expansion have to be summed, not interpolated 78! ielmat(i) material of element i 79! thicke(j,i) thickness of layer j in node i 80! ielprop(i) properties for element i are stored in 81! prop(ielprop(i)+1),prop(ielprop(i)+2),.... 82! (number of properties depends on the type of 83! element) 84! prop property field 85! i number of the element for which the extrapolation 86! is to be performed 87! 88! OUTPUT: 89! 90! inum(i) < 0: node i is a network node 91! > 0: node i is a structural node; inum(i) 92! should be incremented by 1 if in the 93! call of this routine an extrapolated value 94! was stored for this node 95! =0: node i is not used 96! 97 implicit none 98! 99 logical force 100! 101 character*1 cflag 102 character*8 lakon(*) 103! 104 integer ipkon(*),inum(*),kon(*),mi(*),ne,nfield,nk,i,ndim, 105 & iorienloc,ielorien(mi(3),*),ielmat(mi(3),*),ielprop(*) 106! 107 real*8 yi(ndim,mi(1),*),yn(nfield,*),orab(7,*),co(3,*),prop(*), 108 & vold(0:mi(2),*),thicke(mi(3),*) 109! 110 integer indexe,j,k,node 111! 112 indexe=ipkon(i) 113 do j=1,3 114 node=kon(indexe+j) 115 inum(node)=inum(node)+1 116 enddo 117! 118 return 119 end 120