OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
freanim.F File Reference
#include "implicit_f.inc"
#include "units_c.inc"
#include "com01_c.inc"
#include "warn_c.inc"
#include "scr06_c.inc"
#include "scr14_c.inc"
#include "scrcut_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine freanim (ikad, key0, kanim, sensors)

Function/Subroutine Documentation

◆ freanim()

subroutine freanim ( integer, dimension(0:*) ikad,
character, dimension(*) key0,
integer kanim,
type (sensors_), intent(inout) sensors )

Definition at line 42 of file freanim.F.

43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
47 USE message_mod
48 USE stack_mod
49 USE anim_mod
50 USE sensor_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58#include "units_c.inc"
59#include "com01_c.inc"
60#include "warn_c.inc"
61#include "scr06_c.inc"
62#include "scr14_c.inc"
63#include "scrcut_c.inc"
64C-----------------------------------------------
65C D u m m y A r g u m e n t s
66C-----------------------------------------------
67 INTEGER IKAD(0:*),KANIM
68 CHARACTER KEY0(*)*5
69 TYPE (SENSORS_), INTENT(INOUT) :: SENSORS
70C-----------------------------------------------
71C E x t e r n a l F u n c t i o n s
72C-----------------------------------------------
73 INTEGER NVAR
74C-----------------------------------------------
75C L o c a l V a r i a b l e s
76C-----------------------------------------------
77 INTEGER I, NBC, K, IKEY, N1, N2, N3, ITYP,J,NTITLE, IXITKEY
78 CHARACTER TITLE*72, TITLE2*80
79 CHARACTER(LEN=LINE120)::LINE
80 CHARACTER(LEN=NCHARLINE100)::CARTE
81 CHARACTER(LEN=NCHARKEY)::KEY2
82 CHARACTER(LEN=NCHARKEY)::KEY3
83 CHARACTER(LEN=NCHARKEY)::KEY4
84 CHARACTER(LEN=NCHARKEY)::KEY5
85 CHARACTER(LEN=NCHARKEY)::KEY6
86 CHARACTER(LEN=NCHARKEY)::KEY7
87 CHARACTER(LEN=NCHARKEY)::KEY8
88
89 my_real x0,y0,z0,vnx,vny,vnz,v0
90C-----------------------------------------------
91 ikey = kanim
92 animcont = 0
93C-----------------------------------------------
94C Set all indexes and some other variables for ANIM to zero
95C-----------------------------------------------
96 CALL anim_set2zero_struct(sensors)
97C-----------------------------------------------
98C Loop over /ANIM cards
99C-----------------------------------------------
100 ixitkey=0
101 IF(ikad(ikey)/=ikad(ikey+1))THEN
102 k=0
103 1160 READ(iusc1,rec=ikad(ikey)+k,fmt='(A)')line
104 CALL fredec_8key_i(line,key2,key3,key4,key5,key6,key7,key8,nbc)
105
106 k=k+1
107
108 IF(nbc/=0)THEN
109C----------------------------
110C THE FOLLOWING OPTIONS USE AN ADDITIONAL CARD
111C----------------------------
112 IF(key2(1:5)=='DT ')THEN
113 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
114 READ(iusc2,*,err=310,END=320)TANIM0,DTANIM0,tanim_stop0
115 GOTO 320
116 310 READ(iusc2,*,err=320,END=320)tanim0
117 320 CONTINUE
118!
119 IF (dtanim0 <= zero) THEN
120 CALL ancmsg(msgid=293,anmode=aninfo,c1='ANIM',c2='ANIM')
121 CALL arret(0)
122 ENDIF
123
124 IF (tanim_stop0 < zero) THEN
125 CALL ancmsg(msgid=304,anmode=aninfo,c1='ANIM',c2='ANIM')
126 CALL arret(0)
127 ELSEIF (tanim_stop0 == zero)THEN
128 tanim_stop0 = ep20
129 ELSE
130 tanim_stop0 = max(tanim_stop0, max(zero,tanim0))
131 ENDIF
132!
133 ELSEIF(key2(1:5)=='SENSO')THEN
134 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
135 READ(iusc2,*,err=9990) sensors%ANIM_ID,sensors%ANIM_DT
136!
137 ELSEIF(key2(1:5)=='LSENS')THEN
138 DO i=1,nbc
139 READ(iusc1,rec=ikad(ikey)+k+i-1,fmt='(A)',err=9990)carte
140 CALL wriusc2(ikad(ikey)+k+i-1,1,key0(ikey))
141 READ(iusc2,*,err=9990,END=9990) (SENSORS%ANIM_TMP(J+SENSORS%NANIM),J=1,NVAR(CARTE))
142 DO j=1,nvar(carte)
143 sensors%NANIM = sensors%NANIM + 1
144 ENDDO
145 ENDDO
146!
147 ELSEIF(key2(1:5)=='TITLE')THEN
148 DO i=1,nbc
149 READ(iusc1,rec=ikad(ikey)+k+i-1,fmt='(A)',err=9990)carte
150 CALL wriusc2(ikad(ikey)+k+i-1,1,key0(ikey))
151 READ(iusc2,*,err=9990,END=9990) NTITLE,title2
152 nltitle=nltitle+1
153 ntitletab(nltitle)=ntitle
154 titletab(nltitle)=title2
155 ENDDO
156 ELSEIF(key2(1:3)=='CUT')THEN
157 ncuts=ncuts+1
158 READ(key3(1:4),'(I4)')ityp
159 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
160 READ(iusc2,'(A)',err=9990,END=9990)title
161 WRITE(iin,'(I8,A)')ityp,title
162 k=k+1
163 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
164 IF(ityp<3)THEN
165 READ(iusc2,*,err=9990,END=9990)X0,Y0,Z0,VNX,VNY,VNZ,v0
166 WRITE(iin,'(7E16.9)')x0,y0,z0,vnx,vny,vnz,v0
167 ELSE
168 READ(iusc2,*,err=9990,END=9990)N1,N2,n3
169 WRITE(iin,'(3I8)')n1,n2,n3
170 ENDIF
171 k=k-1
172 END IF
173 ELSE ! IF(NBC/=0)THEN
174C----------------------------
175C THE FOLLOWING OPTIONS DONT USE ANY ADDITIONAL CARD
176C----------------------------
177 CALL anim_dcod_key_0(key2,key3,key4,key5,key6,ierr,ixitkey)
178 IF(ixitkey/=0) GOTO 9990
179 ENDIF
180 k=k+nbc
181 IF(ikad(ikey)+k/=ikad(ikey+1))GO TO 1160
182 ENDIF
183C-----------------------------------------------
184C This routine is resetting indexes in cas of /STRESS/ALL, /STRAIN/ALL, etc
185C The correct indexes wrt integration points or layers of all actual elements
186C will be rebuilt after reading the restart file.
187C-----------------------------------------------
189C-----------------------------------------------
190 nv_ani = 0
191 nt_ani = 0
192 ne_ani = 0
193 nn_ani = 0
194 nct_ani = 0
195 nce_ani = 0
196 nst_ani = 0
197 nse_ani = 0
198 nft_ani = 0
199 nfe_ani = 0
200 DO i = 1,mx_ani
201 nv_ani = nv_ani + anim_v(i)
202 nt_ani = nt_ani + anim_t(i)
203 ne_ani = ne_ani + anim_e(i)
204 nn_ani = nn_ani + anim_n(i)
205 nst_ani = nst_ani + anim_st(i)
206 nse_ani = nse_ani + anim_se(i)
207 nct_ani = nct_ani + anim_ct(i)
208 nce_ani = nce_ani + anim_ce(i)
209 nft_ani = nft_ani + anim_ft(i)
210 nfe_ani = nfe_ani + anim_fe(i)
211 ENDDO
212 IF(anim_v(12)==1)nv_ani=nv_ani+1
213 IF(anim_v(4)==1.AND.animcont == 0) nv_ani=nv_ani-1
214 IF(anim_v(27)==1)nv_ani=nv_ani+1
215C-----------------------------------------------
216C Anim Cut non portees en SPMD
217 IF (ncuts>0.AND.nspmd>1) THEN
218 CALL ancmsg(msgid=191,anmode=aninfo)
219 ierr=ierr+1
220 ENDIF
221 IF(anim_vers<40) THEN
222 CALL ancmsg(msgid=192,anmode=aninfo)
223 ierr=ierr+1
224 ENDIF
225 IF (anim_vers>=50) THEN
226 CALL ancmsg(msgid=193,anmode=aninfo)
227 ierr=ierr+1
228 ENDIF
229 RETURN
230C-----------------------------------------------
231 9990 CONTINUE
232 CALL ancmsg(msgid=73,anmode=aninfo,c1=key0(ikey),c2=line(1:35))
233 CALL arret(0)
subroutine anim_dcod_key_0(key2, key3, key4, key5, key6, jerr, ixitkey)
subroutine anim_reset_index_all()
subroutine anim_set2zero_struct(sensors)
#define my_real
Definition cppsort.cpp:32
subroutine fredec_8key_i(cart, key2, key3, key4, key5, key6, key7, key8, nbc)
#define max(a, b)
Definition macros.h:21
integer, parameter ncharline100
integer, parameter ncharkey
integer function nvar(text)
Definition nvar.F:32
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine arret(nn)
Definition arret.F:87
subroutine wriusc2(irec, nbc, key0)
Definition wriusc2.F:60