OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
lec_inimap1d_file.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!|| lec_inimap1d_file ../starter/source/initial_conditions/inimap/lec_inimap1d_file.F
25!||--- called by ------------------------------------------------------
26!|| hm_read_inimap1d ../starter/source/initial_conditions/inimap/hm_read_inimap1d.f
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!||--- uses -----------------------------------------------------
30!|| inimap1d_mod ../starter/share/modules1/inimap1d_mod.F
31!|| message_mod ../starter/share/message_module/message_mod.F
32!||====================================================================
33 SUBROUTINE lec_inimap1d_file(INIMAP1D, FILENAME, ID, TITLE)
34C-----------------------------------------------
35C M o d u l e s
36C-----------------------------------------------
37 USE inimap1d_mod
38 USE message_mod
39 USE groupdef_mod
40 USE multi_fvm_mod
43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47C-----------------------------------------------
48C C o m m o n B l o c k s
49C-----------------------------------------------
50#include "units_c.inc"
51!NFUNCT
52C-----------------------------------------------
53C D u m m y A r g u m e n t s
54C-----------------------------------------------
55 TYPE(INIMAP1D_STRUCT), INTENT(INOUT) :: INIMAP1D
56 CHARACTER(LEN=NCHARLINE),INTENT(INOUT) :: FILENAME
57 INTEGER, INTENT(IN) :: ID
58 CHARACTER(LEN=NCHARTITLE)::TITLE
59C-----------------------------------------------
60C L o c a l V a r i a b l e s
61C-----------------------------------------------
62 CHARACTER MESS*40,BUFFER*14
63 CHARACTER(LEN=NCHARLINE) :: ROOTNAME
64 DATA mess/'INFILE'/
65 INTEGER NUM_CENTROIDS,N_CYCLE,K,ISUBMAT,NBMAT,NUM_NODE_VEL,INPUT_VERSION
66 my_real x_scale,y_scale,x_shift,y_shift,tt
67 INTEGER PREV, NEXT
68 INTEGER :: LEN, LEN_TMP_NAME
69 CHARACTER :: TMP_NAME*2048, FILNAM*2048
70 INTEGER :: IFILNAM(2048),II, NCYCLE, NCELL_TOT, INIVERS
71 LOGICAL FILE_EXIST
72C-----------------------------------------------
73C S o u r c e L i n e s
74C-----------------------------------------------
75 len = len_trim(filename)
76 filnam=filename(1:len)
77 IF(len >= 3)THEN
78 IF( filnam(len-2:len) == ".gz")THEN
79 filnam(len-2:len)=' '
80 len=len-3
81 ENDIF
82 ENDIF
83 len_tmp_name = outfile_name_len + len
84 tmp_name=outfile_name(1:outfile_name_len)//filnam(1:len)
85 tmp_name=filnam(1:len)
86 DO ii=1,len_tmp_name
87 ifilnam(ii)=ichar(tmp_name(ii:ii))
88 END DO
89 CALL cur_fil_c(iuinimap)
90 CALL open_c(ifilnam,len_tmp_name,7)
91 file_exist=.false.
92 inquire( file=trim(filename), exist=file_exist )
93 IF(.NOT.file_exist) THEN
94 inquire( file=trim(filename)//".gz", exist=file_exist )
95 IF(.NOT.file_exist) THEN
96 CALL ancmsg(msgid = 1884, anmode = aninfo, msgtype = msgerror, i1 = id, c1=title)
97 inimap1d%CORRECTLY_READ = .false.
98 return
99 ENDIF
100 ENDIF
101
102 CALL read_i_c(inivers,1)
103 CALL read_db(tt,1)
104 CALL read_i_c(ncycle,1)
105 CALL read_i_c(num_centroids,1)
106 CALL read_i_c(num_node_vel,1)
107 CALL read_i_c(nbmat,1)
108
109 IF(.NOT.ALLOCATED(inimap1d%SUBMAT))ALLOCATE(inimap1d%SUBMAT(nbmat))
110
111 !---ABSCISSA
112 IF(.NOT.ALLOCATED(inimap1d%X))ALLOCATE(inimap1d%X(num_centroids))
113 CALL read_db( inimap1d%X(1),num_centroids)
114 CALL read_db( x_shift,1)
115 !MOVE_FUNCTION
116 DO k=1,num_centroids
117 inimap1d%X(k) = inimap1d%X(k)+x_shift
118 ENDDO
119
120 !---VOLUME FRACTION
121 DO isubmat=1,nbmat
122 IF(.NOT.ALLOCATED(inimap1d%SUBMAT(isubmat)%VFRAC))ALLOCATE(inimap1d%SUBMAT(isubmat)%VFRAC(num_centroids))
123 CALL read_db( inimap1d%SUBMAT(isubmat)%VFRAC(1),num_centroids)
124 ENDDO
125
126 !---DENSITIES
127 DO isubmat=1,nbmat
128 IF(.NOT.ALLOCATED(inimap1d%SUBMAT(isubmat)%RHO))ALLOCATE(inimap1d%SUBMAT(isubmat)%RHO(num_centroids))
129 CALL read_db( inimap1d%SUBMAT(isubmat)%RHO(1),num_centroids)
130 ENDDO
131
132 !---PRESSURE
133 DO isubmat=1,nbmat
134 IF(.NOT.ALLOCATED(inimap1d%SUBMAT(isubmat)%PRES))ALLOCATE(inimap1d%SUBMAT(isubmat)%PRES(num_centroids))
135 CALL read_db( inimap1d%SUBMAT(isubmat)%PRES(1),num_centroids)
136 ENDDO
137
138 !---VELOCITY
139 IF(.NOT.ALLOCATED(inimap1d%VEL))ALLOCATE(inimap1d%VEL(num_node_vel))
140 IF(.NOT.ALLOCATED(inimap1d%X_VEL))ALLOCATE(inimap1d%X_VEL(num_node_vel))
141 IF(num_node_vel == num_centroids)THEN
142 CALL read_db( inimap1d%VEL(1),num_node_vel )
143 DO k=1, num_node_vel
144 inimap1d%X_VEL(k) = inimap1d%X(k)
145 ENDDO
146 ELSE
147 CALL read_db( inimap1d%X_VEL(1),num_node_vel )
148 CALL read_db( inimap1d%VEL(1),num_node_vel )
149 ENDIF
150
151 CALL close_c()
152
153 !check abscissa
154 ! not needed : order already correct when it is built
155 !PREV = INIMAP1D%X(1)
156 !DO K=2,NUM_CENTROIDS-1
157 ! NEXT = INIMAP1D%X(K)
158 ! IF(PREV <= F)THEN
159 ! CALL ANCMSG(MSGID = 1884, ANMODE = ANINFO, MSGTYPE = MSGERROR, I1 = INIMAP1D%ID, C1=INIMAP1D%TITLE)
160 ! EXIT
161 ! ENDIF
162 !ENDDO
163
164 inimap1d%NBMAT = nbmat
165 inimap1d%NUM_CENTROIDS = num_centroids
166 inimap1d%NUM_NODE_VEL = num_node_vel
167 inimap1d%FUNC_VEL = -1
168 IF(.NOT.ALLOCATED(inimap1d%FUNC_ALPHA))ALLOCATE(inimap1d%FUNC_ALPHA(nbmat))
169 IF(.NOT.ALLOCATED(inimap1d%FUNC_RHO))ALLOCATE(inimap1d%FUNC_RHO(nbmat))
170 IF(.NOT.ALLOCATED(inimap1d%FUNC_ENER))ALLOCATE(inimap1d%FUNC_ENER(nbmat))
171 IF(.NOT.ALLOCATED(inimap1d%FUNC_PRES))ALLOCATE(inimap1d%FUNC_PRES(nbmat))
172 DO isubmat=1,nbmat
173 inimap1d%FUNC_ALPHA(isubmat) = -1
174 inimap1d%FUNC_RHO(isubmat) = -1
175 inimap1d%FUNC_ENER(isubmat) = -1
176 inimap1d%FUNC_PRES(isubmat) = -1
177 ENDDO
178
179 IF(.NOT.ALLOCATED(inimap1d%FAC_RHO))ALLOCATE(inimap1d%FAC_RHO(nbmat))
180 IF(.NOT.ALLOCATED(inimap1d%FAC_PRES_ENER))ALLOCATE(inimap1d%FAC_PRES_ENER(nbmat))
181 DO isubmat=1,nbmat
182 inimap1d%FAC_RHO(isubmat) = one
183 inimap1d%FAC_PRES_ENER(isubmat) = one
184 ENDDO
185 inimap1d%FAC_VEL = one
186
187
188 RETURN
189
190 999 CALL ancmsg(msgid = 1884, anmode = aninfo, msgtype = msgerror,
191 . i1 = inimap1d%ID, c1=inimap1d%TITLE)
192
193
194 END SUBROUTINE lec_inimap1d_file
#define my_real
Definition cppsort.cpp:32
subroutine hm_read_inimap1d(inimap1d, npc, itabm1, x, igrbric, igrquad, igrsh3n, multi_fvm, unitab, lsubmodel)
subroutine lec_inimap1d_file(inimap1d, filename, id, title)
character(len=outfile_char_len) outfile_name
integer outfile_name_len
integer, parameter nchartitle
integer, parameter ncharline
subroutine read_db(a, n)
Definition read_db.F:88
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
program starter
Definition starter.F:39
void read_i_c(int *w, int *len)
void close_c()
void cur_fil_c(int *nf)
void open_c(int *ifil, int *len, int *mod)