XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX''"> QTRAN Arrays
The following is a list of the QTRAN data arrays to which user-supplied subroutines may require access. The variable dimensions for these arrays (e.g., J1, J2, ..., MAXT, etc.) are stored in the DIMS common block and may be found in the COMMONBLK file.
The following arrays are arranged in their order of common block declarations. The IA common blocks are Integer Array common blocks, while the RA common blocks are Real Arrays.
Note: | While the documented array structures are valid for QTRAN, recognize that QTRAN is still a living code, and as such the array structures may change from time to time. Also recognize that the publishing of the array structures does not obligate our Hot Line staff to help with basic Fortran language questions. Further recognize that when the basic QTRAN logic is altered with the introduction of user software, it makes support extremely difficult if not impossible. The MSC.Software Corporation will not assume responsibility for software which has been linked to user-supplied subroutines. |
Array Declarations | Common Blocks |
LOGICAL PIVFLG(M1) | LA1 |
INTEGER JPROP(J1,J2) | IA1 |
INTEGER T1RH(J1) | IA2 |
INTEGER T2RH(J1) | IA3 |
INTEGER T3RH(J1) | IA4 |
INTEGER JTYPE(J1) | IA5 |
INTEGER RCPROP(J5) | IA6 |
INTEGER T1RC(J5) | IA7 |
INTEGER T2RC(J5) | IA8 |
INTEGER RCNPNT(J11) | IA9 |
INTEGER RHNPNT(J12) | IA10 |
INTEGER T1RR(J13) | IA11 |
INTEGER T2RR(J13 | IA12 |
INTEGER T3RR(J13) | IA13 |
INTEGER IGTYPE(J13) | IA14 |
INTEGER IGPROP(J13) | IA15 |
INTEGER QCARD(J14,J15) | IA16 |
INTEGER IFLIST(J17,J16) | IA17 |
INTEGER QIPPNT(J17) | IA18 |
INTEGER ITLIST(J18,J19) | IA19 |
INTEGER RRNPNT(J20) | IA20 |
INTEGER FIXNUM(J21) | IA21 |
INTEGER FIXVAL(J21) | IA22 |
INTEGER PIDPAR(J22) | IA23 |
INTEGER PIDID(J24) | IA24 |
INTEGER IALIAS(MAXT) | IA25 |
INTEGER T1RW(J28) | IA26 |
INTEGER T2RW(J28) | IA27 |
INTEGER T3RW(J28) | IA28 |
INTEGER IWTYPE(J28) | IA29 |
INTEGER IWPROP(J28) | IA30 |
INTEGER RWNPNT(J29) | IA31 |
INTEGER TFIX(MAXT) | IA32 |
INTEGER CPROP(J36) | IA33 |
INTEGER CRHO(J36) | IA34 |
INTEGER RCN(MAXTNC) | IA35 |
INTEGER RHN(MAXTNH) | IA36 |
INTEGER RRN(MAXT) | IA37 |
INTEGER QIP(MAXT) | IA38 |
INTEGER RWN(MAXT) | IA39 |
INTEGER T1RF(J30) | IA40 |
INTEGER T2RF(J30) | IA41 |
INTEGER ICPFLO(J30,2) | IA42 |
INTEGER RFN(MAXT) | IA43 |
INTEGER CN(MAXT) | IA44 |
INTEGER MID(J3) | IA45 |
INTEGER PID(J22) | IA46 |
INTEGER MFID(J14) | IA47 |
INTEGER GSN(MAXT) | IA48 |
INTEGER GSNPNT(J26) | IA49 |
INTEGER ISTYPE(J25) | IA50 |
INTEGER ISEMIS(J25) | IA51 |
INTEGER TSURF(J26) | IA52 |
INTEGER NSURF1(J25) | IA53 |
INTEGER NSURF2(J25) | IA54 |
INTEGER SURPNT(J25) | IA55 |
INTEGER WSN(MAXT) | IA56 |
INTEGER WSNPNT(J26) | IA57 |
INTEGER IWSTYP(J25) | IA58 |
INTEGER IWSMID(J25) | IA59 |
INTEGER TWSURF(J26) | IA60 |
INTEGER NWSRF1(J25) | IA61 |
INTEGER NWSRF2(J25) | IA62 |
INTEGER WSRPNT(J25) | IA63 |
INTEGER RFNPNT(J31) | IA64 |
INTEGER T1CAPS(J36) | IA65 |
INTEGER CNPNT(J36) | IA66 |
INTEGER PIVROW(M1) | IA67 |
INTEGER INDRLX(MAXT) | IA68 |
INTEGER IPRLXC(MAXT) | IA69 |
INTEGER IRRLXC(MAXT) | IA70 |
INTEGER IPLTBK(MAXT) | IA71 |
INTEGER IRLXGR(J39,J43) | IA72 |
INTEGER IIDMNRF(8) | IA73 |
INTEGER T1RP(J44) | IA74 |
INTEGER T2RP(J44) | IA75 |
INTEGER PTYPE(J44) | IA76 |
INTEGER PPROP(J44,J46) | IA77 |
INTEGER RPN(MAXP) | IA78 |
INTEGER RPNPNT(J47) | IA79 |
INTEGER IMLIST(J48,J49) | IA80 |
INTEGER MIP(MAXP) | IA81 |
INTEGER MIPPNT(MAXP) | IA82 |
INTEGER IPLIST(J50,J51) | IA83 |
INTEGER PFIX(MAXP) | IA84 |
INTEGER PALIAS(MAXP) | IA85 |
INTEGER PIALAS(MAXP) | IA86 |
INTEGER HIALAS(MMPHI) | IA87 |
INTEGER TCPLND (J52) | IA88 |
INTEGER TCPLCN (J52) | IA89 |
INTEGER QMAVFG( J17 ) | IA90 |
INTEGER GSRFLX( J13 ) | IA91 |
INTEGER WSRFLX( J28 ) | IA92 |
DOUBLE PRECISION GP(J1,J6) | RA1 |
DOUBLE PRECISION COEFF(J3,J4) | RA2 |
DOUBLE PRECISION EXPO(J3,J4) | RA3 |
DOUBLE PRECISION RCAL(J5) | RA4 |
DOUBLE PRECISION P(J7,J9) | RA5 |
DOUBLE PRECISION TX(J9,J10) | RA6 |
DOUBLE PRECISION TY(J9,J10) | RA7 |
DOUBLE PRECISION GSFACT(J13) | RA8 |
DOUBLE PRECISION SETTIM(J21) | RA9 |
DOUBLE PRECISION PIDSET(J22,J23) | RA10 |
DOUBLE PRECISION WSPROP(J28) | RA11 |
DOUBLE PRECISION WLPROP(J28) | RA12 |
DOUBLE PRECISION SFACTR(J28) | RA13 |
DOUBLE PRECISION WAREA(J28) | RA14 |
DOUBLE PRECISION CVOL(J36) | RA15 |
DOUBLE PRECISION TEMPS(MAXT) | RA16 |
DOUBLE PRECISION QVECT(MAXT) | RA17 |
DOUBLE PRECISION ALPHA(MAXT) | RA18 |
DOUBLE PRECISION OTEMPS(MAXT) | RA19 |
DOUBLE PRECISION RMDOT(J30) | RA20 |
DOUBLE PRECISION DTMAXA(J32,J33) | RA21 |
DOUBLE PRECISION PRINTA(J34,J35) | RA22 |
DOUBLE PRECISION GAREA(J13) | RA23 |
DOUBLE PRECISION QMFACT(J17) | RA24 |
DOUBLE PRECISION TMFACT(J18) | RA25 |
DOUBLE PRECISION QBASE(MAXT) | RA26 |
DOUBLE PRECISION SAREA(J26) | RA27 |
DOUBLE PRECISION SSFACT(J25) | RA28 |
DOUBLE PRECISION VFDIST(J25) | RA29 |
DOUBLE PRECISION GDIST(J13) | RA30 |
DOUBLE PRECISION WDIST(J28) | RA31 |
DOUBLE PRECISION WSAREA(J38) | RA32 |
DOUBLE PRECISION WSFACT(J37) | RA33 |
DOUBLE PRECISION WVFDIS(J37) | RA34 |
DOUBLE PRECISION WSLAM1(J37) | RA35 |
DOUBLE PRECISION WSLAM2(J37) | RA36 |
DOUBLE PRECISION TERROR(MAXT,J27) | RA37 |
DOUBLE PRECISION GVALCA(J5) | RA38 |
DOUBLE PRECISION QINMAC(MAXT) | RA39 |
DOUBLE PRECISION AVNODH(MAXT) | RA40 |
DOUBLE PRECISION FVAR(MAXT) | RA41 |
DOUBLE PRECISION MATRIX(M1,M1) | RA42 |
DOUBLE PRECISION XRCRDV(MAXT) | RA43 |
DOUBLE PRECISION YZCRDV(MAXT) | RA43 |
DOUBLE PRECISION ZCORDV(MAXT) | RA43 |
DOUBLE PRECISION RLXTBS(J39,J40) | RA44 |
DOUBLE PRECISION RLXTBT(J39,J40) | RA45 |
DOUBLE PRECISION RELAXV(MAXT) | RA46 |
DOUBLE PRECISION EFACTB(MAXT) | RA47 |
DOUBLE PRECISION RELAXM(MAXT) | RA48 |
DOUBLE PRECISION RERROR(MAXT,J41) | RA49 |
DOUBLE PRECISION RLXGRP(J39,J42) | RA50 |
DOUBLE PRECISION PGP(J44,J45) | RA51 |
DOUBLE PRECISION MMFACT(J48) | RA52 |
DOUBLE PRECISION PMFACT(J49) | RA53 |
DOUBLE PRECISION MDBASE(MAXP) | RA54 |
DOUBLE PRECISION MDBASE (MAXP) | RA55 |
DOUBLE PRECISION PRHOE(J44) | RA56 |
DOUBLE PRECISION VELOCP(MAXP) | RA57 |
DOUBLE PRECISION PRO(MAXP) | RA58 |
DOUBLE PRECISION OPRESS(MAXP) | RA2 |
DOUBLE PRECISION PRESS(MAXP) | RA59 |
DOUBLE PRECISION MDOTP(J44) | RA60 |
DOUBLE PRECISION MDOTND(MAXP) | RA61 |
DOUBLE PRECISION HYCCE(J44) | RA62 |
DOUBLE PRECISION DIFHED(J44) | RA63 |
DOUBLE PRECISION OTMXHA(J32) | RA64 |
DOUBLE PRECISION QMDOTP(J44) | RA65 |
DOUBLE PRECISION CRHOCM( J36 ) | RA66 |
DOUBLE PRECISION RHONOD( MXTCMA ) | RA67 |
DOUBLE PRECISION QDPYGS( MXTCMA ) | RA68 |
DOUBLE PRECISION QMFLUX( MAXT ) | RA69 |
DOUBLE PRECISION CNVFLX( MAXT ) | RA70 |
DOUBLE PRECISION RADFLX( MAXT ) | RA71 |
DOUBLE PRECISION QBASEA( MAXT ) | RA72 |
DOUBLE PRECISION QBASEF( MAXT ) | RA73 |
DOUBLE PRECISION QMFLAR( MAXT ) | RA74 |
DOUBLE PRECISION CNVFAR( MAXT ) | RA75 |
DOUBLE PRECISION RADFAR( MAXT ) | RA76 |
In the following, the arrays have been grouped according to usage.
Node Number Alias Array
INTEGER IALIAS(MAXT) IA25
IALIAS(N) contains the model’s node number for QTRAN’s internal node number N. The sign of IALIAS(N) determines whether the node’s temperature will be printed out in the QOUTDAT file, with a negative sign indicating that it will be printed out and a positive sign indicating that it will not be printed out.
This whole process of “aliased” node numbers is necessary if a code is to allow nonsequential node numbering in the model. QTRAN essentially looks at the node numbers that are used in the model and then condenses out any node numbers which are not used in the model that lie between 1 and the largest node number specified. This adds some unfortunate complexity to the coding, but it allows more flexibility in modeling without incurring unacceptable performance costs.
A useful QTRAN subroutine for determining a QTRAN internal node number for a given model node number is subroutine GETNUM. The calling sequence for GETNUM is as follows:
CALL GETNUM( YNODE, QNODE, IALIAS, NTEMPS, MATCH )
where:
INTEGER YNODE, QNODE, IALIAS(MAXT), NTEMPS LOGICAL MATCH
and YNODE is the node number from the model, QNODE is the QTRAN internal node number that QTRAN has assigned to YNODE (QNODE is returned by GETNUM), IALIAS is the node alias array, NTEMPS comes from the COMMONBLK file and is the number of nodes which have been defined in the model, and MATCH is returned as .TRUE. or .FALSE., depending on whether GETNUM was able to match YNODE in the IALIAS array.
Conductive Resistor Arrays | |
INTEGER T1RC(J5) INTEGER T2RC(J5) NTEGER RCPROP(J5) DOUBLE PRECISION RCAL(J5) DOUBLE PRECISION GVALCA(J5) INTEGER RCN(MAXTNC) INTEGER RCNPNT(J11) | IA7 IA8 IA6 RA4 RA38 IA35 IA9 |
T1RC(K) and T2RC(K) contain QTRAN’s internal node numbers for conductive resistor K’s nodes 1 and 2. RCPROP(K) contains trains internal MPID number for thermal conductivity for resistor K, and RCAL(K) contains the area/length ratio for conductive resistor K. If solution option 1 (SOL = 1 in the QINDAT file) is being used, GVALCA(K) contains the conductance (kA/L) for resistor K.
RCN(N) contains the number of conductive resistors associated with QTRAN’s internal node N. RCNPNT is a pointer array used by QTRAN to determine which conductive resistors are associated with a particular node, and is used in conjunction with the RCN array. If RCN(1) is 10, the first 10 elements of the RCNPNT are conductive resistors which are associated with QTRAN internal node number 1. The conductive resistors associated with QTRAN internal node number 2 (if any) would be contained in RCNPNT(11) to RCNPNT(10+RCN(2)).
Convective Resistor Arrays | |
INTEGER T1RH(J1) INTEGER T2RH(J1) INTEGER T3RH(J1) INTEGER JTYPE(J1) DOUBLE PRECISION GP(J1,J6) INTEGER JPROP(J1,J2) INTEGER RHN(MAXTNH) INTEGER RHNPNT(J12) | IA2 IA3 IA4 IA5 RA1 IA1 IA36 IA10 |
The QTRAN internal node numbers associated with convective resistor K are stored in T1RH(K), T2RH(K), and T3RH(K), and the convective configuration (CFIG value) for convective resistor K is stored in JTYPE(K). The GP values for convective resistor K are stored in GP(K,1) through GP(K,J6) while the QTRAN internal MPID numbers for convective resistor K are stored in JPROP(K,1) through JPROP(K,J2).
RHN(N) is the number of convective resistors associated with node N. The RHNPNT array interacts with the RHN array in a manner similar to the conductive resistors and RCN/RCNPNT interactions.
Advective Resistor Arrays | |
INTEGER T1RF(J30) INTEGER T2RF(J30) INTEGER ICPFLO(J30,2) DOUBLE PRECISION RMDOT(J30) INTEGER RFN(MAXT) INTEGER RFNPNT(J31) | IA40 IA41 IA42 RA20 IA43 IA64 |
The QTRAN internal node numbers associated with advective resistor K are stored in T1RF(K) and T2RF(K). The QTRAN internal MPID numbers associated with specific heat and with variable mass flow rate for advective resistor K are stored in ICPFLO(K,1) and ICPFLO(K,2), respectively. The constant mass flow rate (or flow rate multiplier) associated with advective resistor K is stored in RMDOT(K).
The RFN and RFNPNT arrays are analogous to the conductive resistor RCN and RCNPNT arrays.
Hydraulic Resistor Arrays | |
INTEGER T1RP(J44) INTEGER T2RP(J44) INTEGER PTYPE(J44) DOUBLE PRECISION PGP(J44,J46) INTEGER PPROP(J44,J46) INTEGER RPN(MAXP) INTEGER RHNPNT(J47) | IA74 IA75 IA76 RA1 IA77 IA78 IA79 |
The QTRAN internal node numbers associated with hydraulic resistor K are stored in T1RP(K) and T2RP(K), and the fluid configuration (FCFIG value) for hydraulic resistor K is stored in PTYPE(K). The GP values for hydraulic resistor K are stored in PGP(K,1) through PGP(K,J46) while the QTRAN internal MPID numbers for hydraulic resistor K are stored in PPROP(K,1) through PPROP(K,J46).
RPN(N) is the number of hydraulic resistors associated with node N. The RPNPNT array interacts with the RPN array in a manner similar to the conductive resistors and RCN/RCNPNT interactions.
The hydraulic network introduces an additional network that is solved as a separate group of nodes with its own solution procedure separate from the thermal network solution. This imposes some restriction on the node definitions. All hydraulic nodes must be specified before the purely thermal nodes are specified, but there is no restriction on how the nodes are to be numbered. As with gaps in the thermal nodes require an aliasing array to relate user nodes numbers to internal node number, the same is needed for the fluid nodes, plus index to relate internal node numbers to the internal thermal node numbers is required.
INTEGER PALIAS(MAXP) INTEGER PIALAS(MAXP) INTEGER HIALAS(MMPHI) | IA85 IA86 IA87 |
PALIAS(N) contains the model node number as specified by the user to the internal node number N. PIALAS(N) contains the internal thermal node number corresponding to the internal fluid node number N. HIALAS(N) contains the internal fluid node number corresponding to the internal thermal node number N.
Gray Radiative Resistor Arrays | |
INTEGER T1RR(J13) INTEGER T2RR(J13) INTEGER T3RR(J13) INTEGER IGTYPE(J13) INTEGER IGPROP(J13) DOUBLE PRECISION GDIST(J13) DOUBLE PRECISION GSFACT(J13) DOUBLE PRECISION GAREA(J13) INTEGER RRN(MAXT) INTEGER RRNPNT(J20) | IA11 IA12 IA13 IA14 IA15 RA30 RA8 RA23 IA37 IA20 |
The QTRAN internal node numbers associated with gray radiative resistor K are stored in T1RR(K), T2RR(K), and T3RR(K). The resistor subtype for gray radiative resistor K is stored in IGTYPE(K), while the QTRAN internal MPID number associated with the resistor (for emissivity, transmissivity, or extinction coefficient) is stored in IGPROP(K). The view factor distance (if any) is stored in GDIST(K), the F value is stored in GSFACT(K), and the A value (if any) is stored in GAREA(K).
The RRN and RRNPNT arrays are analogous to the conductive resistor RCN and RCNPNT arrays.
Wavelength Radiative Resistor Arrays |
INTEGER T1RW(J28) INTEGER T2RW(J28) INTEGER T3RW(J28) INTEGER IWTYPE(J28) INTEGER IWPROP(J28) DOUBLE PRECISION WSPROP(J28) DOUBLE PRECISION WLPROP(J28) DOUBLE PRECISION SFACTR(J28) DOUBLE PRECISION WAREA(J28) DOUBLE PRECISION WDIST(J28) INTEGER RWN(MAXT) INTEGER RWNPNT(J29) | IA26 IA27 IA28 IA29 IA30 RA11 RA12 RA13 RA14 RA31 IA39 IA31 |
The QTRAN internal node numbers associated with wavelength-dependent radiative resistor K are stored in T1RW(K), T2RW(K), and T3RW(K). The resistor subtype for wavelength-dependent radiative resistor K is stored in IWTYPE(K), while the QTRAN internal MPID number associated with the resistor (for emissivity, transmissivity, or extinction coefficient) is stored in IWPROP(K). The view factor distance (if any) is stored in WDIST(K), the F value is stored in SFACTR(K), and the A value (if any) is stored in WAREA(K). The shortest and longest wavelengths associated with wavelength-dependent radiative resistor K are stored in WSPROP(K) and WLPROP(K), respectively.
The RWN and RWNPNT arrays are analogous to the conductive resistor RCN and RCNPNT arrays.
Capacitor Data Arrays |
INTEGER T1CAPS(J36) INTEGER CPROP(J36) INTEGER CRHO(J36) DOUBLE PRECISION CVOL(J36) INTEGER PIDID(J24) INTEGER CN(MAXT) INTEGER CNPNT(J36) | IA65 IA33 IA34 RA15 IA24 IA44 IA66 |
The QTRAN internal node number for capacitor K is stored in T1CAPS(K), while the QTRAN internal specific heat, density, and phase change MPID numbers are stored in CPROP(K), CRHO(K), and PIDID(K), respectively. The volume associated with capacitor K is stored in CVOL(K).
The CN and CNPNT arrays are analogous to conductive resistor arrays RCN and RCNPNT.
Non-Phase Change Material Property Data Arrays |
INTEGER MID(J3) DOUBLE PRECISION COEFF(J3,J4) DOUBLE PRECISION EXPO(J3,J4) | IA45 RA2 RA3 |
These arrays are used to store material property data if the MPID defined was NOT a phase change data set (IEVAL not set to PH in the QINDAT file). For these MPID sets, QTRAN stores the MPID numbers into the MID array in the order they appear in the QINDAT or MATDAT files. For QTRAN internal nemophilas change MPID number K, the MPID which is defined for this material is stored in MID(K).
The MDATA1 and MDATA2 values for QTRAN internal MPID K are stored in COEFF(K,2) to COEFF(K,J4) for MDATA1 and in EXPO(K,2) to EXPO(K,J4) for the MDATA2 values. COEFF(K,1) is used to store the number of MDATA1/MDATA2 data pairs, while EXPO(K,1) is used to store a numeric key for the evaluation option IEVAL. Specifically:
EXPO(K,1) | | 1 --> Constant |
| | 2 --> Table (linear unequal interval) |
| | 3 --> Hermite table |
| | 4 --> Power Series |
| | 5 --> Sutherland Equation |
| | 6 --> Bingham Equation |
| | 7 --> LCI data table |
| | 8 --> Reciprocal Function |
| | 9 --> Straight Line |
| | 10 --> Arbitrary Order Polynomial |
| | 11 --> User-Supplied Subroutine (UPROPS) |
| | 12 --> Indexed Linearly Interpolated Table |
| | 13 --> Indexed Hermite Interpolated Table |
Phase Change Material Property Data Arrays |
INTEGER PID(J22) INTEGER PIDPAR(J22) DOUBLE PRECISION PIDSET(J22,J23) | IA46 IA23 RA10 |
These arrays are used to store material property data if the MPID defined WAS a phase change data set (IEVAL set to PH in the QINDAT file). For these MPID sets, QTRAN stores your MPID numbers into the PID array in the order they appear in the QINDAT or MATDAT files. For QTRAN internal phase change MPID number K, the MPID which is defined for this material is stored in PID(K).
The MDATA1 and MDATA2 values for QTRAN internal phase change MPID K are stored in PIDSET(K,1) through PIDSET(K,J23). For phase change set K, the number of MDATA1/MDATA2 data pairs is stored in PIDPAR(K).
Microfunction Arrays |
INTEGER MFID(J14) INTEGER QCARD(J14,J15) DOUBLE PRECISION P(J7,J9) DOUBLE PRECISION TX(J9,J10) DOUBLE PRECISION TY(J9,J10) | IA47 IA16 RA5 RA6 RA7 |
MFID(K) contains the microfunction ID number (MFID) for the K'th microfunction which is defined in the QINDAT or MICRODAT files.
QCARD(K,1) contains an argument code for the microfunction which specifies whether the microfunction is to be a function of time, temperature, delta temperature, delta T4, or average temperature. Values are 0, 1, 2, 3, and 4, respectively.
QCARD(K,2) stores the microfunction option number as per
Microfunction Library (Ch. 10).
QCARD(K,3) contains the number of parameters or data pairs entered for MDATA1 and MDATA2.
QCARD(K,4) contains a row pointer L into the P or TX/TY arrays where the MDATA values for the microfunction are stored.
For the K'th microfunction, L is stored in QCARD(K,4). The parameters MICDAT1-MICDAT4 are stored in P(L,1) through P(L,4) for those microfunctions which use parameters. For tabular microfunctions, the MICDAT1/MICDAT2 ordered pairs are stored in TX(L,2) -TX(L,J10) for MICDAT1 values and TY(L,2)-TY(L,J10) for MICDAT2 values. TX(L,1) contains the number of MDATA data pairs, and TY(L,1) is not used.
QMACROfunction Arrays |
INTEGER IFLIST(J17,J16) DOUBLE PRECISION QMFACT(J17) INTEGER QIP(MAXT) INTEGER QIPPNT(J17) | IA17 RA24 IA38 IA18 |
For the K'th QMACROfunction, IFLIST(K,1) contains the QTRAN internal node number to which the heat source is assigned.
IFLIST(K,2) contains the number of microfunctions used to build this QMACROfunction.
IFLIST(K,3) contains the T1 QTRAN internal node number.
IFLIST(K,4) contains the T2 QTRAN internal node number.
IFLIST(5)-IFLIST( 4+IFLIST(K,2) ) contains the QTRAN internal microfunction ID's which are used to build this QMACROfunction.
QMFACT(K) contains the scale factor for the K'th QMACROfunction.
QIP and QIPPNT are analogous to the conductive resistor RCN and RCNPNT arrays, respectively.
MMACROfunction Arrays |
INTEGER IMLIST(J48,J49) INTEGER MIP(MAXP) INTEGER MIPPNT(MAXP) DOUBLE PRECISION MMFACT(J48) | IA80 IA81 IA8 2 RA52 |
For the K'th MMACROfunction, IMLIST(K,1) contains the QTRAN internal node number to which the fluid mass flow rate is assigned.
IMLIST(K,2) contains the number of microfunctions used to build this QMACROfunction.
IMLIST(K,3) contains the P1 QTRAN hydraulic internal node number.
IMLIST(K,4) contains the P2 QTRAN hydraulic internal node number.
IMLIST(5)-IPLIST( 4+IMLIST(K,2) ) contains the QTRAN internal microfunction ID's which are used to build this MMACROfunction.
MMFACT(K) contains the scale factor for the K'th MMACROfunction.
MIP and MIPPNT are analogous to the conductive resistor RCN and RCNPNT arrays, respectively.
TMACROfunction Arrays |
INTEGER ITLIST(J18,J19) DOUBLE PRECISION TMFACT(J18) | IA19 RA25 |
For the K'th TMACROfunction, ITLIST(K,1) contains the QTRAN internal node number to which the temperature source is assigned.
ITLIST(K,2) contains the number of microfunctions used to build this TMACROfunction.
ITLIST(K,3) contains the T1 QTRAN internal node number.
ITLIST(K,4) contains the T2 QTRAN internal node number.
ITLIST(5)-ITLIST( 4+ITLIST(K,2) ) contains the QTRAN internal microfunction IDs which are used to build this TMACROfunction.
TMFACT(K) contains the scale factor for the K'th TMACROfunction.
PMACROfunction Arrays |
INTEGER IPLIST(J50,J51) DOUBLE PRECISION PMFACT(J50) | IA83 RA53 |
For the K'th MMACROfunction, IPLIST(K,1) contains the QTRAN internal node number to which the temperature source is assigned.
IPLIST(K,2) contains the number of microfunctions used to build this MMACROfunction.
IPLIST(K,3) contains the P1 QTRAN internal hydraulic node number.
IPLIST(K,4) contains the P2 QTRAN internal node hydraulic number.
IPLIST(5)-IPLIST( 4+IPLIST(K,2) ) contains the QTRAN internal microfunction ID's which are used to build this MMACROfunction.
PMFACT(K) contains the scale factor for the K'th MMACROfunction.
Constant Nodal Heat Source Arrays |
DOUBLE PRECISION QBASE(MAXT) | RA26 |
QBASE(N) is the constant nodal heat source value associated with QTRAN internal node number N. Once read from the QINDAT file in subroutine INPUT4, it is never updated by QTRAN. However, it can be modified by any of the User-Supplied subroutines.
Constant Nodal Mass Flow Rate Arrays |
DOUBLE PRECISION MDBASE(MAXP) | RA54 |
MBASE(N) is the constant nodal net mass flow rate value associated with QTRAN internal node number N. Once read from the QINDAT file in subroutine INPUT4, it is never updated by QTRAN. However, it can be modified by any of the User-Supplied subroutines.
Nodal Hydraulic/Fluid Flow Arrays |
DOUBLE PRECISION VELOCP(MAXP) DOUBLE PRECISION PRHO(MAXP) DOUBLE PRECISION OPRESS(MAXP) DOUBLE PRECISION PRESS(MAXP) DOUBLE PRECISION MDOTND(MAXP) | RA56 RA57 RA58 RA59 RA61 |
VELOCP is the average velocity at internal hydraulic node. PRHO is the average density at the internal hydraulic node. OPRESS is pressure from the previous interaction at the internal hydraulic node. PRESS is the current pressure at the internal hydraulic node. MDOTND is the net mass flow rate at the internal hydraulic node.
Elemental Hydraulic/Fluid Flow Arrays |
DOUBLE PRECISION PRHOE(J44) DOUBLE PRECISION MDOTP(J44) DOUBLE PRECISION HYCCE(J44) DOUBLE PRECISION DIFHED(J44) DOUBLE PRECISION QMDOTP(J44) | RA55 RA60 RA62 RA63 RA65 |
These arrays define parameters that apply to the hydraulic elements rather than results at the node locations. PRHOE is the average fluid density throughout an element. MDOTP is the mass flow rate of fluid flowing in a given hydraulic element. HYCCE is the hydraulic conductance throughout a given element. DIFHED is the difference in static head from one side of a hydraulic element to the other. QMDOTP is the volumetric flow rate of the fluid flowing through a given element.
Node Classification Arrays (Fixed, Not Fixed, etc.) |
INTEGER TFIX(MAXT) INTEGER FIXNUM(J21) DOUBLE PRECISION SETTIM(J21) INTEGER FIXVAL(J21) INTEGER PFIX(MAXP) | IA32 IA21 RA9 IA22 IA84 |
TFIX(N) contains the fixed, not fixed, or TMACROfunction controlled code for node N. The values are 0: for not fixed, 1 for fixed, and 2 for TMACROfunction controlled.
The QINDAT CFIX information is stored in the FIXNUM, SETTIM, and FIXVAL arrays. For the K'th CFIX data line in the QINDAT file, FIXNUM(K) contains the QTRAN internal node number whose TFIX classification is being changed, SETTIM(K) is the time at which the change is to occur, and FIXVAL(K) is the new TFIX control code (see TFIX above) which is 0, 1, or 2.
PFIX(N) contains the fixed or not fixed code for the internal hydraulic node N. The hydraulic fixed flag operates on the fluid pressure. If a Hydraulic node is fixed, the pressure at that node is fixed.
Node Temperature Arrays |
DOUBLE PRECISION OTEMPS(MAXT) DOUBLE PRECISION TEMPS(MAXT) | RA19 RA16 |
OTEMPS(K) is the temperature of internal node number K at the beginning of a time step for transient runs. It is not used for steady-state runs.
TEMPS(K) is the temperature of internal node number K for steady-state runs. It is also the temperature at time t+dt (the end of the time step) for transient runs.
The temperatures stored in these arrays are in the temperature scale specified by the QINDAT parameter ICCALC.
Temperature Error Arrays |
DOUBLE PRECISION TERROR(MAXT,J27) | RA37 |
TERROR(N,1) through TERROR(N,J27) contains the iterative error for QTRAN internal node N for the last J27 iterations. TERROR(N,1) is the most recent iterative error while TERROR(N,J27) is the least recent iterative error. This array is used in conjunction with the EPSIT2 parameter for determining which nodes should continue to be iterated upon.
Net Nodal Heat Flow Array |
DOUBLE PRECISION QVECT(MAXT) | RA17 |
QVECT(N) is the net nodal heat flow into QTRAN internal node number N, not including the heat flow to/from the capacitors associated with node N. This value is updated in subroutine CCAPAC.
Explicit Stable Time Step Array |
DOUBLE PRECISION ALPHA(MAXT) | RA18 |
ALPHA(N) is the explicit stable time step associated with QTRAN internal node number N. It is updated in subroutine CCAPAC.
Time Step Adjustment Array |
DOUBLE PRECISION DTMAXA(J32,J33) DOUBLE PRECISION DTMXHA(J32) | RA21 RA64 |
DTMAXA is an array that is used to store the DTMAX adjustments. See
QTRAN Run Control Parameters and Node Number Declarations (Ch. 8). The DTMAXA data pairs from the QINDAT file are stored in the DTMAXA array in the order in which they appear in the QINDAT file. DTMAXA(1,1) contains the number of DTMAXA data pairs in the QINDAT file. DTMAXA(1,2) contains a pointer to the next row of the DTMAXA array that will be used to adjust the DTMAX value. DTMAXA(K,1) contains the new DTMAX values, while DTMAXA(K,2) contains the implementation times.
DTMXHA is an array that contains the time step increment for hydraulic solutions. When time gets to the implementation time defined by DTMAXA(K,2), a new fluid time step DTMAXH is defined by DTMXHA(K).
Print Interval Adjustment Array |
DOUBLE PRECISION PRINTA(J34,J35) | RA22 |
PRINTA is an array that is used to store the TPRINT adjustments. See
QTRAN Run Control Parameters and Node Number Declarations (Ch. 8). The PRINTA data pairs from the QINDAT file are stored in the PRINTA array in the order in which they appear in the QINDAT file. PRINTA(1,1) contains the number of PRINTA data pairs in the QINDAT file. PRINTA(1,2) contains a pointer to the next row of the PRINTA array that will be used to adjust the TPRINT value. PRINTA(K,1) contains the new TPRINT values, while PRINTA(K,2) contains the implementation times.
Plot Block Nodes Array |
INTEGER IPLTBK(MAXT) | IA71 |
This array stores the indexes of the node that are defined in the plot output block.
Node Locations Arrays |
DOUBLE PRECISION XRCRDV(MAXT) DOUBLE PRECISION YZCRDV(MAXT) DOUBLE PRECISION ZCORDV(MAXT) | RA43 RA43 RA43 |
DOUBLE PRECISION XYZCRD(MAXT,3) | RA43 |
These array are in common block RA43 and contain the node locations in the global coordinate system. The locations are packed in the same order that the nodes were defined in the node definition block.
Note that all three arrays are in the same named common block. This is the same as referencing the values as a doubly dimensioned array XYZCRD( MAXT, 3 ). Since this type of array is loaded by column in Fortran, the unit dimension for the array can not be used to reference the arrays. Either the MAXT value must be input for the specific case being executed, another subroutine called where the MAXT argument is included as one of the parameters passed and included in the declaration statement or only a single dimensioned array is specified and the actual index is calculated. For example, if the single index is used, the index would indicate the x location but MAXT and 2*MAXT would have to be added for the y and z locations respectively.
Another point is that the radial dimension for axisymmetric translation is always in the XRCRDV and the z-axis dimension is always in the YZCRDV arrays regardless of which plane was used to create the model. Thus if a model was created in the zx plane with the z-axis being defined as the radial direction all radial dimension would be in the XRCRDV array and the z-axis dimension which would have been along the x-axis would be in the YZCRDV array.
Relaxation Parameters Arrays |
INTEGER INDRLX(MAXT) INTEGER IPRLXC(MAXT) INTEGER IRRLXC(MAXT) INTEGER IRLXGR(J39,J43) DOUBLE PRECISION RLXTBS(J39,J40) DOUBLE PRECISION RLXTBT(J39,J40) DOUBLE PRECISION RELAXV(MAXT) DOUBLE PRECISION EFACTB(MAXT) DOUBLE PRECISION RELAXM(MAXT) DOUBLE PRECISION RERROR(MAXT,J41) DOUBLE PRECISION RLXGRP(J39,J42) | IA68 IA69 IA70 IA72 RA44 RA45 RA46 RA47 RA48 RA49 RA50 |
These arrays contain information related to calculations and printout of the relaxation parameters. The INDRLX, IPRLXC, and IRRLXC arrays are pointers that indicate the type of relaxation applied to a given node and counters which indicate if the relaxation parameter is to be updated. IRLXGR keeps the node IDs that have the greater iterative delta or system error for each type of node. RLXTBS and RLXTBT contain the relaxation parameters that are input through the QINDAT File. The first index is the node type, advection, radiation, etc. and the second index is the type of parameter: maximum value, damping factor, and multiplying factor. RELAXV is the relaxation parameter used by the specified node, EFACTB is the system error multiplier which is the measure of how quick the node is converging. RELAXM is the relaxation multiplier that is applied at each node. This is how under relaxation is applied. RERROR is the iterative delta associated with each node. The last three values are retained in the array with the first index representing the oldest value. RLXGRP is a summary of the maximum values encountered for each node group. This information is saved for print purposes.
Temperature Coupling Arrays |
INTEGER TCPLND (NTCPL) INTEGER TCPLCN (NTCPL) | IA88 IA89 |
The internal node ID contained in array TCPLND is lumped into internal node ID defined at the same position in array TCPLCN. Although the internal energy balanced is performed as though the TCPLND node is the same as the TCPLCN node, its individuality is retained and is updated after each converged iteration. NTCPL is the total number of temperature coupling and is defined in common block IB106. The arrays are originally sized with variable J52 which is defined in the DIMS Common Block.