OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
read_pch_file.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine read_pch_file (flag, matrix, itag, matrix_add, cpt_stiff, cpt_mass, itabm1, pch_file, id, titr)

Function/Subroutine Documentation

◆ read_pch_file()

subroutine read_pch_file ( integer flag,
matrix,
integer, dimension(*) itag,
integer, dimension(4,*) matrix_add,
integer cpt_stiff,
integer cpt_mass,
integer, dimension(*) itabm1,
character pch_file,
integer id,
character(len=nchartitle) titr )

Definition at line 35 of file read_pch_file.F.

37C-----------------------------------------------
38C M o d u l e s
39C-----------------------------------------------
41 USE message_mod
43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47C-----------------------------------------------
48C D u m m y A r g u m e n t s
49C-----------------------------------------------
50 INTEGER ID,ITABM1(*),ITAG(*),MATRIX_ADD(4,*), CPT_STIFF,CPT_MASS,FLAG
51 my_real matrix(*)
52 CHARACTER PCH_FILE*100
53 CHARACTER(LEN=NCHARTITLE) :: TITR
54C-----------------------------------------------
55C L o c a l V a r i a b l e s
56C-----------------------------------------------
57 INTEGER I,REF,IFO,TIN,TOUT,POLAR,NCOL,DUM,ID_NOD1,ID_NOD2,J,ISTOP
58 my_real rell
59 CHARACTER DEBUT*8,NAME*8,MATRIX_TYPE*16,NWLINE*100,MESS*40
60
61 INTEGER :: LEN_TMP_NAME,I_ERR
62 CHARACTER(len=2148) :: TMP_NAME
63C-----------------------------------------------
64C E x t e r n a l F u n c t i o n s
65C-----------------------------------------------
66 INTEGER USR2SYS
67 DATA mess/'FLEXIBLE BODY DEF - READ OF PCH FILE '/
68C=======================================================================
69C
70C FLAG = 0 -> PREREADING FOR NODES DETECTION AND NUMBERING (SETRFXBYON.F)
71C FLAG = 1 -> READING OF NODES AND MATRIX (LECFXB1.F)
72C
73 ref = 71
74 i_err = 0
75C
76 len_tmp_name = infile_name_len+len_trim(pch_file)
77 tmp_name=infile_name(1:infile_name_len)//pch_file(1:len_trim(pch_file))
78 OPEN(unit=ref,file=tmp_name(1:len_tmp_name),
79 . access='SEQUENTIAL',form='FORMATTED',status='UNKNOWN')
80C
81 CALL fxrline(ref,nwline,id,titr)
82 READ(nwline,'((A,A,5I8,I16))') debut,name,dum,ifo,tin,tout,polar,ncol
83C
84 IF ((ifo == 6).AND.(tin < 3)) THEN
85C
86C------- Symmetric matrix - real (no imaginary part) -----------
87C
88C Reading of a new block --
89 DO WHILE (i_err == 0)
90C
91 istop=0
92 DO WHILE (istop==0)
93 READ(ref,'(A)',END=100) nwline
94 IF (nwline(1:5)=='DMIG ') THEN
95 READ(nwline,'((A,A,5I8,I16))') debut,name,dum,ifo,tin,tout,polar,ncol
96 ELSEIF ((nwline(1:1)/='#').AND.((nwline(1:1)/='$')).AND.((len_trim(nwline)/=0))) THEN
97 istop=1
98 ENDIF
99 ENDDO
100C
101 READ(nwline,'((A,A,2I16))') debut,matrix_type,id_nod1,i
102 id_nod1=usr2sys(id_nod1,itabm1,mess,id)
103 IF (id_nod1 /= 0) THEN
104 itag(id_nod1) = 1
105 ELSE
106 RETURN
107 ENDIF
108C
109 CALL fxrline(ref,nwline,id,titr)
110C
111 IF (adjustl(matrix_type) == 'KAAX') THEN
112 DO WHILE (nwline(1:1) == '*')
113 READ(nwline,'((A,I16,I16,F16.3))') debut,id_nod2,j,rell
114 cpt_stiff = cpt_stiff + 1
115 id_nod2=usr2sys(id_nod2,itabm1,mess,id)
116 IF (id_nod2 /= 0) THEN
117 itag(id_nod2) = 1
118 IF (flag == 1) THEN
119 matrix(cpt_stiff-1) = rell
120 matrix_add(1,cpt_stiff-1) = id_nod1
121 matrix_add(2,cpt_stiff-1) = id_nod2
122 matrix_add(3,cpt_stiff-1) = i
123 matrix_add(4,cpt_stiff-1) = j
124 ENDIF
125 ELSE
126 RETURN
127 ENDIF
128 READ(ref,'(A)',iostat=i_err,END=100) nwline
129 END DO
130C
131 ELSEIF (adjustl(matrix_type) == 'MAAX') THEN
132 DO WHILE (nwline(1:1) == '*')
133 READ(nwline,'((A,I16,I16,F16.3))') debut,id_nod2,j,rell
134 cpt_mass = cpt_mass + 1
135 id_nod2=usr2sys(id_nod2,itabm1,mess,id)
136 IF (id_nod2 /= 0) THEN
137 IF (flag == 1) THEN
138 matrix(cpt_mass-1) = rell
139 matrix_add(1,cpt_mass-1) = id_nod1
140 matrix_add(2,cpt_mass-1) = id_nod2
141 matrix_add(3,cpt_mass-1) = i
142 matrix_add(4,cpt_mass-1) = j
143 ENDIF
144 ELSE
145 RETURN
146 ENDIF
147 READ(ref,'(A)',iostat=i_err,END=100) nwline
148 END DO
149C
150 ELSEIF ((adjustl(matrix_type)=='baax.OR.')(ADJUSTL(MATRIX_TYPE)=='pax.OR.')ADJUSTL(MATRIX_TYPE)=='k4aax') THEN
151C-- Input not compatible
152 I_ERR = 1
153 IF (FLAG == 0) THEN
154 CALL ANCMSG(MSGID=1738,
155 . MSGTYPE=MSGERROR,
156 . ANMODE=ANINFO_BLIND_1,
157 . I1=ID,
158 . C1=TITR,
159 . C2=ADJUSTL(MATRIX_TYPE))
160 ENDIF
161C
162 ENDIF
163C
164 BACKSPACE(REF)
165C
166 END DO
167C
168100 CONTINUE
169C
170 ENDIF
171C
172 CLOSE(UNIT=REF,STATUS='keep')
173C
174 RETURN
175C
#define my_real
Definition cppsort.cpp:32
subroutine fxrline(ific, nwline, id, titr)
initmumps id
integer infile_name_len
character(len=infile_char_len) infile_name
integer, parameter nchartitle
integer function usr2sys(iu, itabm1, mess, id)
Definition sysfus.F:160