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

Go to the source code of this file.

Functions/Subroutines

subroutine read_mat_table (table, numtabl)

Function/Subroutine Documentation

◆ read_mat_table()

subroutine read_mat_table ( type(table_4d_), dimension(numtabl), intent(inout) table,
integer, intent(in) numtabl )

Definition at line 35 of file read_mat_table.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE table4d_mod
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C D u m m y A r g u m e n t s
46C-----------------------------------------------
47 INTEGER ,INTENT(IN) :: NUMTABL
48 TYPE(TABLE_4D_) ,INTENT(INOUT) :: TABLE(NUMTABL)
49C-----------------------------------------------
50C L o c a l V a r i a b l e s
51C-----------------------------------------------
52 INTEGER I,J,K,L,M,N,LEN,NPT,NDIM,STAT
53 INTEGER LDIM(4)
54 my_real, DIMENSION(:) ,ALLOCATABLE :: ytmp
55c===============================================
56 DO n=1,numtabl
57 len = 1
58 CALL read_i_c(table(n)%NOTABLE,len)
59 IF (table(n)%NOTABLE == 0) cycle
60 len = 1
61 CALL read_i_c(ndim,len)
62 table(n)%NDIM = ndim
63 ALLOCATE(table(n)%X(ndim),stat=stat)
64c
65 DO k=1,ndim
66 CALL read_i_c(npt,len)
67 ALLOCATE(table(n)%X(k)%VALUES(npt) ,stat=stat)
68 CALL read_db(table(n)%X(k)%VALUES,npt)
69 ldim(k) = npt
70 END DO
71 npt = ldim(1)
72 IF (ndim == 1) THEN
73 ALLOCATE(table(n)%Y1D(npt) ,stat=stat)
74 CALL read_db(table(n)%Y1D,npt)
75 ELSE IF (ndim == 2) THEN
76 len = ldim(1)*ldim(2)
77 ALLOCATE(ytmp(len))
78 ALLOCATE(table(n)%Y2D(ldim(1),ldim(2)) ,stat=stat)
79 CALL read_db(ytmp,len)
80 m = 0
81 DO j=1,ldim(2)
82 DO i=1,npt
83 m = m+1
84 table(n)%Y2D(i,j) = ytmp(m)
85 END DO
86 END DO
87 ELSE IF (ndim == 3) THEN
88 len = ldim(1)*ldim(2)*ldim(3)
89 ALLOCATE(ytmp(len))
90 ALLOCATE(table(n)%Y3D(ldim(1),ldim(2),ldim(3)),stat=stat)
91 CALL read_db(ytmp,len)
92 m = 0
93 DO k=1,ldim(3)
94 DO j=1,ldim(2)
95 DO i=1,npt
96 m = m+1
97 table(n)%Y3D(i,j,k) = ytmp(m)
98 END DO
99 END DO
100 END DO
101 ELSE IF (ndim == 4) THEN
102 len = ldim(1)*ldim(2)*ldim(3)*ldim(4)
103 ALLOCATE(ytmp(len))
104 ALLOCATE(table(n)%Y4D(ldim(1),ldim(2),ldim(3),ldim(4)),stat=stat)
105 CALL read_db(ytmp,len)
106 m = 0
107 DO l=1,ldim(4)
108 DO k=1,ldim(3)
109 DO j=1,ldim(2)
110 DO i=1,npt
111 m = m+1
112 table(n)%Y4D(i,j,k,l) = ytmp(m)
113 END DO
114 END DO
115 END DO
116 END DO
117 END IF
118 IF (ALLOCATED(ytmp)) DEALLOCATE(ytmp)
119 END DO
120c-----------
121 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine read_db(a, n)
Definition read_db.F:90
void read_i_c(int *w, int *len)