OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
freiniv.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| freiniv ../engine/source/input/freiniv.F
25!||--- called by ------------------------------------------------------
26!|| freform ../engine/source/input/freform.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../engine/source/output/message/message.F
29!|| arret ../engine/source/system/arret.F
30!|| errmsg ../engine/source/input/errmsg.F
31!|| wriusc2 ../engine/source/input/wriusc2.F
32!||--- uses -----------------------------------------------------
33!|| message_mod ../engine/share/message_module/message_mod.F
34!|| names_and_titles_mod ../common_source/modules/names_and_titles_mod.F
35!||====================================================================
36 SUBROUTINE freiniv(IKAD,KEY0,KINIV,NINIV)
37C-----------------------------------------------
38C M o d u l e s
39C-----------------------------------------------
40 USE message_mod
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46C-----------------------------------------------
47C C o m m o n B l o c k s
48C-----------------------------------------------
49#include "units_c.inc"
50C-----------------------------------------------
51C D u m m y A r g u m e n t s
52C-----------------------------------------------
53 INTEGER IKAD(0:*),KINIV,NINIV
54 CHARACTER KEY0(*)*5
55C-----------------------------------------------
56C E x t e r n a l F u n c t i o n s
57C-----------------------------------------------
58 INTEGER NVAR
59C-----------------------------------------------
60C L o c a l V a r i a b l e s
61C-----------------------------------------------
62 INTEGER I,J,M,N,NBC,K,K3,IV1(40),IKEY,JJ,IFM,IOS,IGN
63 my_real v,vtx,vty,vtz
64 CHARACTER KEY2*5, KEY3*5
65 CHARACTER(LEN=NCHARLINE100)::CARTE
66C-----------------------------------------------
67 k=0
68 ios = 0
69 ikey=kiniv
70 m = 0
71 DO n=1,niniv
72 READ(iusc1,rec=ikad(ikey)+k,fmt='(7X,A,1X,A,1X,I5,25X,I10)',
73 . err=9990)key2,key3,k3,nbc
74 k=k+1
75 IF (key2=='TRA ') THEN
76 m=1
77 IF(key3(1:1)=='X') THEN
78 jj=1
79 ELSEIF(key3(1:1)=='Y') THEN
80 jj=2
81 ELSEIF(key3(1:1)=='Z') THEN
82 jj=3
83 ELSE
84 CALL errmsg(key2)
85 ENDIF
86 ELSEIF (key2=='ROT ') THEN
87 m=1
88 IF(key3(1:1)=='X') THEN
89 jj=4
90 ELSEIF(key3(1:1)=='Y') THEN
91 jj=5
92 ELSEIF(key3(1:1)=='Z') THEN
93 jj=6
94 ELSE
95 CALL errmsg(key2)
96 ENDIF
97 ELSEIF (key2=='AXIS ') THEN
98 m=2
99 IF(key3(1:1)=='X') THEN
100 jj=-1
101 ELSEIF(key3(1:1)=='Y') THEN
102 jj=-2
103 ELSEIF(key3(1:1)=='Z') THEN
104 jj=-3
105 ELSE
106 CALL errmsg(key2)
107 ENDIF
108 ELSE
109 CALL errmsg(key2)
110 ENDIF
111C
112 IF (jj < 0) THEN
113c first line
114 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
115 k=k+1
116 READ(iusc2,*,err=9990,END=9990) ifm
117c second line
118 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
119 k=k+1
120 READ(iusc2,*,err=9990,END=9990) VTX, VTY, VTZ, v
121 ELSE
122 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
123 k=k+1
124 READ(iusc2,*,iostat=ios) v
125 ENDIF
126C
127 IF(nbc<=m .OR. ios /= 0 .OR.(k3==2.AND.nbc/=(m+1))) THEN
128 CALL ancmsg(msgid=73,anmode=aninfo,c1=key0(ikey))
129 CALL arret(2)
130 END IF
131C------
132 IF (k3==2) THEN
133 READ(iusc1,rec=ikad(ikey)+k,fmt='(A)',err=9990)carte
134 k=k+1
135 READ(carte,fmt='(I10)') ign
136 WRITE(iin,'(3I10,1PG20.13)')-ign,ign,jj,v
137 IF(jj < 0) THEN
138 WRITE(iin,'(1P3G20.13,I10)')vtx,vty,vtz,ifm
139 ENDIF
140 ELSE
141 DO i=1,nbc-m
142 READ(iusc1,rec=ikad(ikey)+k,fmt='(A)',err=9990)carte
143 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
144 k=k+1
145 READ(iusc2,*,err=9990,END=9990)(IV1(J),J=1,NVAR(CARTE))
146 DO j=1,nvar(carte),k3+1
147 WRITE(iin,'(3I10,1PG20.13)')iv1(j),iv1(j+k3),jj,v
148 IF(jj < 0) THEN
149 WRITE(iin,'(1P3G20.13,I10)')vtx,vty,vtz,ifm
150 ENDIF
151 ENDDO
152 ENDDO
153 END IF
154 ENDDO
155C
156 RETURN
157C
158 9990 CONTINUE
159 CALL ancmsg(msgid=73,anmode=aninfo,
160 . c1=key0(ikey))
161 CALL arret(0)
162 END
#define my_real
Definition cppsort.cpp:32
subroutine errmsg(key)
Definition errmsg.F:40
subroutine freiniv(ikad, key0, kiniv, niniv)
Definition freiniv.F:37
integer, parameter ncharline100
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