1 /****************************************************************** 2 * FUNCTION regen - specifies regenerator geometric and thermal * 3 * parameters * 4 * FILENAME regen.c * 5 * PROGRAMMER I.Urieli (FORTRAN) * 6 * E. Malroy (C Translation) * 7 * DATE: 12/01/94 (FORTRAN), 02/27/96 (C Translation) * 8 * LAST MODIFICATION: 08/16/96 BY I Urieli * 9 * INCLUDE: , ,"define.h" * 10 * GLOBAL VARIABLES: * 11 * FILE *infile - pointer to the input data file * 12 * FILE *outfile - pointer to the output data file * 13 * FILE *printfile - pointer to the print output file * 14 * lr: regenerator effective length (m) * 15 * cqwr: regenerator wall thermal conductance (Watts/K) * 16 * SYMBOLIC CONSTANTS: PI 3.14159265359 * 17 * PROTOTYPE: void regen(void); * 18 * PRE: infile, outfile, printfile * 19 * POST: lr, cqwr have been specified * 20 * matrix has been invoked to specify mesh properties * 21 ******************************************************************/ 22 #include 23 #include 24 #include "define.h" 25 26 void matrix(double); /* regenerator matrix choice */ 27 void mesh(double); /* wire mesh matrix */ 28 void foil(double); /* coiled foil matrix */ 29 30 /*************temporary fix**********/ 31 double kwr = 25.0; /* thermal conductivity (W/m/K) */ 32 /* stainless steel thermal conductivity - temperature dependent: 33 25 W/m/K for normal engine conditions, 34 6 W/m/K for cryogenic coolers. */ 35 double csm = 3.545e6; /* matrix volumetric heat capacity (J/cu.m/K) */ 36 /* specific heat capacity * density for stainless steel */ 37 /*********************** end temporary fix - I Urieli *************/ 38 39 void regen() 40 { 41 double doreg; /* regenerator housing external diameters */ 42 double dreg; /* regenerator housing internal diameters */ 43 double direg; /* regenerator matrix internal diameter */ 44 double areg; /* regenerator matrix frontal area */ 45 double awr; /* variable to make cqwr */ 46 int nreg; /* number of regenerator tubes */ 47 char myreg; /* regenerator housing configuration */ 48 49 fgetc(infile); /* remove the "return" char from the buffer */ 50 do { 51 printf("\nenter regenerator housing configuration\n"); 52 printf(" t, for tubular regenerator set\n"); 53 printf(" a, for annular regenerator\n"); 54 myreg=fgetc(infile); 55 if(myreg == 't') { 56 fprintf(outfile, "%c\n", myreg); 57 printf("tubular regenerator housing\n"); 58 printf(" enter tube ext,int diam(m)\n"); 59 fscanf(infile,"%lf %lf", &doreg,&dreg); 60 fprintf(outfile," %e %e\n", doreg,dreg); 61 printf(" enter length (m), no.of tubes\n"); 62 fscanf(infile,"%lf %d", &lr,&nreg); 63 fprintf(outfile," %e %d\n", lr,nreg); 64 fprintf(printfile, "tubular regenerator housing\n"); 65 fprintf(printfile," tube ext,int diam(m):\n"); 66 fprintf(printfile," %e %e\n", doreg,dreg); 67 fprintf(printfile," length(m), no.of tubes:\n"); 68 fprintf(printfile," %e %d\n", lr,nreg); 69 direg = 0.0; 70 } 71 else if(myreg == 'a') { 72 fprintf(outfile,"%c\n", myreg); 73 printf("annular regenerator housing\n"); 74 printf(" enter housing ext,int diam(m)\n"); 75 fscanf(infile,"%lf %lf", &doreg,&dreg); 76 fprintf(outfile," %e %e\n", doreg,dreg); 77 printf(" enter matrix int diam(m), length(m)\n"); 78 fscanf(infile,"%lf %lf", &direg,&lr); 79 fprintf(outfile," %e %e\n", direg,lr); 80 fprintf(printfile, "annular regenerator housing\n"); 81 fprintf(printfile," housing ext,int diam(m): \n"); 82 fprintf(printfile," %e %e\n", doreg,dreg); 83 fprintf(printfile," matrix int diam(m), length(m): \n"); 84 fprintf(printfile," %e %e\n", direg,lr); 85 nreg = 1; 86 } 87 else { 88 printf("regen config %c undefined\n",myreg); 89 myreg = 'u'; 90 } 91 } 92 while(myreg=='u'); 93 94 areg = nreg*PI*(dreg*dreg - direg*direg)/4.0; 95 awr = nreg*PI*(doreg*doreg - dreg*dreg)/4.0; 96 cqwr = kwr*awr/lr; 97 98 matrix(areg); 99 } 100 101 /****************************************************************** 102 * FUNCTION matrix - specifies regenerator matrix geometric and * 103 * thermal parameters * 104 * FILENAME regen.c * 105 * PROGRAMMER I.Urieli (FORTRAN) * 106 * E. Malroy (C Translation) * 107 * DATE: 12/01/94 (FORTRAN), 02/27/96 (C Translation) * 108 * LAST MODIFICATION: 08/16/96 BY I Urieli * 109 * INCLUDE: , "define.h" * 110 * GLOBAL VARIABLES: * 111 * FILE *infile - pointer to the input data file * 112 * FILE *outfile - pointer to the output data file * 113 * FILE *printfile - pointer to the print output file * 114 * rmatrx: regen matrix type (foil or mesh) * 115 * PROTOTYPE: void matrix(double); * 116 * PRE: infile, outfile, printfile * 117 * areg (total cross-section area, void & matrix) * 118 * POST: matrix type (rmatrx) has been chosen * 119 * either mesh or foil has been invoked * 120 ******************************************************************/ 121 void matrix(double areg) 122 { 123 fgetc(infile); /* remove the "return" char from the buffer */ 124 do { 125 printf("enter regen matrix type:\n"); 126 printf(" m for mesh\n"); 127 printf(" f for foil\n"); 128 rmatrx=fgetc(infile); 129 if(rmatrx == 'm') { 130 fprintf(outfile, "%c\n", rmatrx); 131 printf("mesh regenerator matrix:\n"); 132 fprintf(printfile, "mesh regenerator matrix:\n"); 133 mesh(areg); 134 } 135 else if(rmatrx == 'f') { 136 fprintf(outfile, "%c\n", rmatrx); 137 printf("foil regenerator matrix:\n"); 138 fprintf(printfile, "foil regenerator matrix:\n"); 139 foil(areg); 140 } 141 else { 142 printf("regen matrix %c undefined\n",rmatrx); 143 rmatrx = 'u'; 144 } 145 } 146 while(rmatrx == 'u'); 147 } 148 149 /****************************************************************** 150 * FUNCTION mesh - specifies regenerator mesh matrix properties * 151 * FILENAME regen.c * 152 * PROGRAMMER I.Urieli (FORTRAN) * 153 * E. Malroy (C Translation) * 154 * LAST MODIFICATION: 08/16/96 BY I Urieli * 155 * DATE: 12/01/94 (FORTRAN), 02/27/96 (C Translation) * 156 * INCLUDE: , , "define.h" * 157 * GLOBAL VARIABLES: * 158 * FILE *infile - pointer to the input data file * 159 * FILE *outfile - pointer to the output data file * 160 * FILE *printfile - pointer to the print output file * 161 * vr: regenerator void volume (cu.m) * 162 * ar: regenerator internal free flow area (sq.m) * 163 * awgr: regenerator internal wetted area (sq.m) * 164 * dr: regenerator hydraulic diameter (m) * 165 * cmr: regenerator matrix thermal capacity (Joules/K) * 166 * PROTOTYPE: void mesh(double); * 167 * PRE: infile, outfile, printfile * 168 * areg (total cross-section area, void & matrix) * 169 * POST: ar, vr, dr, awgr, cmr have been determined * 170 ******************************************************************/ 171 void mesh(double areg) 172 { 173 double dwire; /* mesh wire diameter(m) */ 174 double vmetal; /* matrix metal volume */ 175 double psi; /* matrix porosity */ 176 177 printf(" stacked wire mesh matrix\n"); 178 printf(" enter porosity, wire diam(m)\n"); 179 fscanf(infile,"%lf%lf", &psi,&dwire); 180 fprintf(outfile," %6.3f %e\n", psi,dwire); 181 fprintf(printfile," stacked wire mesh matrix\n"); 182 fprintf(printfile, " porosity, wire diam(m):\n"); 183 fprintf(printfile," %6.3f %e\n", psi,dwire); 184 185 ar = areg*psi; 186 vr = ar*lr; 187 dr = dwire*psi/(1.0 - psi); 188 awgr = 4.0*vr/dr; 189 190 printf(" hydraulic diam %7.3f(mm)\n", dr*1.0e3); 191 printf(" total wetted area %e(sq.m)\n",awgr); 192 printf(" void volume %10.2f(cc)\n",vr*1.0e6); 193 fprintf(printfile, " hydraulic diam %7.3f(mm)\n", dr*1.0e3); 194 fprintf(printfile, " total wetted area %e(sq.m)\n",awgr); 195 fprintf(printfile, " void volume %10.2f(cc)\n",vr*1.0e6); 196 197 vmetal = (1.0 - psi)*vr; 198 cmr = csm*vmetal; 199 printf(" mesh thermal capacity %10.3f(joules/K)\n", cmr); 200 fprintf(printfile, " mesh thermal capacity %10.3f(joules/K)\n", cmr); 201 } 202 203 /****************************************************************** 204 * FUNCTION foil - specifies regenerator matrix properties * 205 * FILENAME regen.c * 206 * PROGRAMMER E. Malroy * 207 * DATE: 5/14/96 * 208 * LAST MODIFICATION: 08/16/96 by I Urieli * 209 * INCLUDE: , ,"define.h" * 210 * GLOBAL VARIABLES: * 211 * FILE *infile - pointer to the input data file * 212 * FILE *outfile - pointer to the output data file * 213 * FILE *printfile - pointer to the print output file * 214 * lr: regenerator effective length (m) * 215 * vr: regenerator void volume (cu.m) * 216 * ar: regenerator internal free flow area (sq.m) * 217 * awgr: regenerator internal wetted area (sq.m) * 218 * dr: regenerator hydraulic diameter (m) * 219 * cmr: regenerator matrix thermal capacity (Joules/K) * 220 * PROTOTYPE: void foil(double); * 221 * PRE: infile, outfile, printfile * 222 * areg (total cross-section area, void & matrix) * 223 * POST: ar, vr, dr, awgr, cmr have been determined * 224 ******************************************************************/ 225 void foil(double areg) 226 { 227 double th; /* foil thickness (m) */ 228 double fl; /* unrolled foil length (m) */ 229 double am; /* foil frontal area (sq.m) */ 230 double psi; /* matrix porosity */ 231 double vmetal; /* volume of metal foil */ 232 233 234 printf(" enter unrolled length of foil(m), foil thickness(m)\n"); 235 fscanf(infile," %lf %lf", &fl, &th); 236 fprintf(outfile," %f %e\n", fl, th); 237 fprintf(printfile," unrolled length of foil, foil thickness\n"); 238 fprintf(printfile," %f(m) %e(m)\n", fl, th); 239 240 am = th*fl; 241 ar = areg - am; 242 vr = ar*lr; 243 awgr = 2.0*lr*fl; 244 dr = 4.0*vr/awgr; 245 psi = ar/areg; 246 247 printf(" hydraulic diam %7.3f(mm)\n", dr*1.0e3); 248 printf(" total wetted area %f(sq.m)\n",awgr); 249 printf(" void volume %10.2f(cc)\n",vr*1.0e6); 250 printf(" porosity %6.3f\n", psi); 251 fprintf(printfile, " hydraulic diam %7.3f(mm)\n", dr*1.0e3); 252 fprintf(printfile, " total wetted area %f(sq.m)\n",awgr); 253 fprintf(printfile, " void volume %10.2f(cc)\n",vr*1.0e6); 254 fprintf(printfile, " porosity %6.3f\n", psi); 255 256 vmetal = am*lr; 257 cmr = csm*vmetal; 258 printf(" foil thermal capacity %10.3f(joules/K)\n", cmr); 259 fprintf(printfile, " foil thermal capacity %10.3f(joules/K)\n", cmr); 260 } condor{t.gentry}22: