/[ascend]/trunk/models/steam/dsgsat3.a4c
ViewVC logotype

Diff of /trunk/models/steam/dsgsat3.a4c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1382 by jpye, Wed Mar 14 07:48:27 2007 UTC revision 1383 by jpye, Fri Apr 6 10:50:41 2007 UTC
# Line 14  IMPORT "johnpye/roots"; Line 14  IMPORT "johnpye/roots";
14    
15  MODEL dsgsat3;  MODEL dsgsat3;
16      n IS_A integer_constant;      n IS_A integer_constant;
17      n :== 5;(* with L = 10m: 5,6,7,8,9,10,11 *)      n :== 30;(* with L = 10m: 5,6,7,8,9,10,11 *)
18               (* with L =  5m: 2,3,4,5,7,9,11,12,13,1415,16 *)               (* with L =  5m: 2,3,4,5,7,9,11,12,13,1415,16 *)
19    
20      dz IS_A real_constant;      dz IS_A real_constant;
21      L IS_A real_constant;      L IS_A real_constant;
22      L :== 10 {m};      L :== 11 {m};
23      dz :== L / (n-1);      dz :== L / (n-1);
24    
25      nodes,butfirst1,upwind4,central IS_A set OF integer_constant;      nodes,butfirst1,upwind4,central IS_A set OF integer_constant;
# Line 30  MODEL dsgsat3; Line 30  MODEL dsgsat3;
30    
31      (* temporal derivatives *)      (* temporal derivatives *)
32      drho_dt[butfirst1] IS_A density_rate;      drho_dt[butfirst1] IS_A density_rate;
33      dmdot_dt[butfirst1] IS_A mass_rate_rate;      (* dmdot_dt[butfirst1] IS_A mass_rate_rate; *)
34      du_dt[butfirst1] IS_A specific_energy_rate;      du_dt[butfirst1] IS_A specific_energy_rate;
35      dTw_dt[butfirst1] IS_A temperature_rate;      dTw_dt[butfirst1] IS_A temperature_rate;
36    
# Line 61  MODEL dsgsat3; Line 61  MODEL dsgsat3;
61      qdot_t[butfirst1], qdot_l[butfirst1] IS_A power_per_length;      qdot_t[butfirst1], qdot_l[butfirst1] IS_A power_per_length;
62      qdot_s IS_A power_per_length;      qdot_s IS_A power_per_length;
63    
     FOR i IN nodes CREATE  
         z_vel[i]: vel[i] = v[i]*mdot[i]/A;  
     END FOR;  
   
64      (* some aliases just for easier review of the state of the model *)      (* some aliases just for easier review of the state of the model *)
65      x[nodes] IS_A fraction;      x[nodes] IS_A fraction;
66      mdot[nodes] IS_A mass_rate;      mdot[nodes] IS_A mass_rate;
# Line 72  MODEL dsgsat3; Line 68  MODEL dsgsat3;
68      rho[nodes] IS_A mass_density;      rho[nodes] IS_A mass_density;
69      u[nodes] IS_A specific_energy;      u[nodes] IS_A specific_energy;
70      v[nodes] IS_A specific_volume;      v[nodes] IS_A specific_volume;
71    
72    (*  Qdot_t IS_A energy_rate;
73        Qdot_t = SUM[qdot_t[i] | i IN butfirst1]; *)
74    
75        FOR i IN nodes CREATE
76            z_vel[i]: vel[i] = v[i]*mdot[i]/A;
77        END FOR;
78    
79      FOR i IN nodes CREATE      FOR i IN nodes CREATE
80          x[i],    node[i].x ARE_THE_SAME;          x[i],    node[i].x ARE_THE_SAME;
81          mdot[i], node[i].mdot ARE_THE_SAME;          mdot[i], node[i].mdot ARE_THE_SAME;
# Line 118  MODEL dsgsat3; Line 122  MODEL dsgsat3;
122               + (p[i]*v[i]*mdot[i] - p[i-1]*v[i-1]*mdot[i-1]);               + (p[i]*v[i]*mdot[i] - p[i-1]*v[i-1]*mdot[i-1]);
123      END FOR;      END FOR;
124    
125      (* momentum conservation *)      (* stationary momentum *)
126        FOR i IN butfirst1 CREATE
127            z_mombal[i]: p[i] = p[i-1] - dz  * f/D/2 * rho[i] * vel[i]^2;
128        END FOR;
129      mom_upwind4 :== [];      mom_upwind4 :== [];
130      mom_central :== central - mom_upwind4;      mom_central :== [];
131    (*
132        * momentum conservation *
133      FOR i IN mom_upwind4 CREATE      FOR i IN mom_upwind4 CREATE
134          z_mombal2[i]:  - dz/A * dmdot_dt[i]          z_mombal2[i]:  - dz/A * dmdot_dt[i]
135               =  (p[i]-p[i-1])  (* backdiff for pressure *)               =  (p[i]-p[i-1])  * backdiff for pressure *
136                  + dz * f/D/2 * rho[i] * vel[i]^2                  + dz * f/D/2 * rho[i] * vel[i]^2
137                  + (rho[i+1]*vel[i+1]^2 + 6.*rho[i]*vel[i]^2 - 3.*rho[i-1]*vel[i-1]^2 - 2.*rho[i-2]*vel[i-2]^2) / 6.;                  + (rho[i+1]*vel[i+1]^2 + 6.*rho[i]*vel[i]^2 - 3.*rho[i-1]*vel[i-1]^2 - 2.*rho[i-2]*vel[i-2]^2) / 6.;
138      END FOR;      END FOR;
# Line 139  MODEL dsgsat3; Line 148  MODEL dsgsat3;
148                  + dz * f/D/2 * rho[i] * vel[i]^2                  + dz * f/D/2 * rho[i] * vel[i]^2
149                  + (rho[i]*vel[i]^2 - rho[i-1]*vel[i-1]^2);                  + (rho[i]*vel[i]^2 - rho[i-1]*vel[i-1]^2);
150      END FOR;      END FOR;
151    *)
152    
153      (* internal/external convection, and thermal mass of wall -- no spatial derivs here *)      (* internal/external convection, and thermal mass of wall -- no spatial derivs here *)
154      FOR i IN butfirst1 CREATE      FOR i IN butfirst1 CREATE
# Line 148  MODEL dsgsat3; Line 158  MODEL dsgsat3;
158      END FOR;      END FOR;
159    
160      t IS_A time;      t IS_A time;
161    
162  METHODS  METHODS
163    
164      METHOD bound_self;      METHOD bound_self;
165          vel[nodes].upper_bound := 100 {m/s};          vel[nodes].upper_bound := 100 {m/s};
166          qdot_l[butfirst1].lower_bound := 0 {W/m};          qdot_l[butfirst1].lower_bound := 0 {W/m};
# Line 166  METHODS Line 178  METHODS
178          END FOR;          END FOR;
179          FOR i IN butfirst1 DO          FOR i IN butfirst1 DO
180              drho_dt[i] := 0 {kg/m^3/s};              drho_dt[i] := 0 {kg/m^3/s};
181              dmdot_dt[i] := 0 {kg/s/s};  (*          dmdot_dt[i] := 0 {kg/s/s}; *)
182              du_dt[i] := 0 {kJ/kg/s};              du_dt[i] := 0 {kJ/kg/s};
183              dTw_dt[i] := 0 {K/s};              dTw_dt[i] := 0 {K/s};
184              qdot_t[i] := 0 {W/m};              qdot_t[i] := 0 {W/m};
# Line 190  METHODS Line 202  METHODS
202          FIX T_amb;          FIX T_amb;
203          (* fix derivatives to zero *)          (* fix derivatives to zero *)
204          FOR i IN butfirst1 DO          FOR i IN butfirst1 DO
205              FREE x[i]; FIX p[i];              FREE x[i]; FIX p[i]; FREE node[i].mdot;
206              FIX drho_dt[i];  FREE p[i];              FIX drho_dt[i];  FREE p[i];
207              FIX du_dt[i]; FREE T[i];              FIX du_dt[i]; FREE T[i];
208              FREE mdot[i]; FIX dmdot_dt[i];  (*          FREE mdot[i]; FIX dmdot_dt[i]; *)
209          END FOR;          END FOR;
210      END specify;      END specify;
211      METHOD values;      METHOD values;
212          D := 0.06 {m};          D := 0.06 {m};
213          D_2 := 0.07 {m};          D_2 := 0.07 {m};
214          T_amb := 298 {K};          T_amb := 298 {K};
215          h_int := 100 {W/m^2/K};          h_int := 1000 {W/m^2/K};
216          h_ext := 20 {W/m^2/K};          h_ext := 5 {W/m^2/K};
217          f := 0.03;          f := 0.03;
218          mdot[1] := 0.26 {kg/s};          mdot[1] := 0.26 {kg/s};
219          p[1]    := 10 {bar};          p[1]    := 10 {bar};
220          x[1]    := 0.23;          x[1]    := 0.23;
221          rho_w := 1000 {kg/m^3};          rho_w := 1000 {kg/m^3};
222          qdot_s := 1000 {W/m^2} * D_2 * 10;          qdot_s := 100 {W/m^2} * D_2 * 10 * 11{m} / L;
223          FOR i IN butfirst1 DO          FOR i IN butfirst1 DO
224              T_w[i] := 298 {K};              T_w[i] := 298 {K};
225              dmdot_dt[i] := 0.0 {kg/s/s};  (*          dmdot_dt[i] := 0.0 {kg/s/s};*)
226              du_dt[i] := 0 {kJ/kg/s};              du_dt[i] := 0 {kJ/kg/s};
227              v[i] := 0.2 {L/kg};              v[i] := 0.2 {L/kg};
228              rho[i] := 6 {kg/L};              rho[i] := 6 {kg/L};
# Line 224  METHODS Line 236  METHODS
236      END on_load;      END on_load;
237      (*---------------- a physically sensible steady-state configuration-----------*)      (*---------------- a physically sensible steady-state configuration-----------*)
238      METHOD configure_steady;      METHOD configure_steady;
239          RUN default_self;          EXTERNAL defaultself_visit_childatoms(SELF);
240            EXTERNAL defaultself_visit_submodels(SELF);
241          RUN ClearAll;          RUN ClearAll;
242          RUN specify;          RUN specify;
243          RUN bound_steady;          RUN bound_steady;
# Line 238  METHODS Line 251  METHODS
251      METHOD configure_dynamic;      METHOD configure_dynamic;
252          FOR i IN butfirst1 DO          FOR i IN butfirst1 DO
253              FREE drho_dt[i];  FIX rho[i];              FREE drho_dt[i];  FIX rho[i];
254              FREE dmdot_dt[i]; FIX mdot[i];  (*          FREE dmdot_dt[i]; FIX mdot[i]; *)
255              FREE du_dt[i];    FIX u[i];              FREE du_dt[i];    FIX u[i];
256              FREE dTw_dt[i];   FIX T_w[i];              FREE dTw_dt[i];   FIX T_w[i];
257              FREE x[i];              FREE x[i];
# Line 249  METHODS Line 262  METHODS
262      METHOD free_states;      METHOD free_states;
263          FOR i IN butfirst1 DO          FOR i IN butfirst1 DO
264              FREE rho[i];              FREE rho[i];
265              FREE mdot[i];  (*          FREE mdot[i]; *)
266              FREE u[i];              FREE u[i];
267              FREE T_w[i];              FREE T_w[i];
268          END FOR;          END FOR;
# Line 262  METHODS Line 275  METHODS
275              drho_dt[i].ode_id := 4*i;     rho[i].ode_id := 4*i;              drho_dt[i].ode_id := 4*i;     rho[i].ode_id := 4*i;
276              drho_dt[i].ode_type := 2;     rho[i].ode_type := 1;              drho_dt[i].ode_type := 2;     rho[i].ode_type := 1;
277    
278              dmdot_dt[i].ode_id := 4*i+1;  mdot[i].ode_id := 4*i+1;  (*          dmdot_dt[i].ode_id := 4*i+1;  mdot[i].ode_id := 4*i+1;
279              dmdot_dt[i].ode_type := 2;    mdot[i].ode_type := 1;              dmdot_dt[i].ode_type := 2;    mdot[i].ode_type := 1;*)
280                            
281              du_dt[i].ode_id := 4*i+2;     u[i].ode_id := 4*i+2;              du_dt[i].ode_id := 4*i+2;     u[i].ode_id := 4*i+2;
282              du_dt[i].ode_type := 2;       u[i].ode_type := 1;              du_dt[i].ode_type := 2;       u[i].ode_type := 1;
# Line 288  METHODS Line 301  METHODS
301          x[n].obs_id := 1;          x[n].obs_id := 1;
302          p[n].obs_id := 1;          p[n].obs_id := 1;
303          vel[n].obs_id := 1;          vel[n].obs_id := 1;
304            T_w[n].obs_id := 2;
305    
306      END ode_init;      END ode_init;
307      METHOD fix_outlet_quality;      METHOD fix_outlet_quality;

Legend:
Removed from v.1382  
changed lines
  Added in v.1383

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22