/[ascend]/trunk/models/johnpye/iapws95.a4c
ViewVC logotype

Diff of /trunk/models/johnpye/iapws95.a4c

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

revision 106 by johnpye, Mon Dec 12 12:14:48 2005 UTC revision 107 by johnpye, Mon Dec 12 14:18:25 2005 UTC
# Line 54  Boston, MA 02111-1307  USA Line 54  Boston, MA 02111-1307  USA
54    
55  *)  *)
56    
57  MODEL iapws95;  MODEL thermo_state;
58        T IS_A temperature;
59        rho IS_A mass_density;
60        p IS_A pressure;
61        u IS_A specific_energy;
62        h IS_A specific_enthalpy;
63        s IS_A specific_entropy;
64        cp IS_A specific_heat_capacity;
65        cv IS_A specific_heat_capacity;
66        w IS_A speed;
67    END thermo_state;
68        
69    MODEL iapws95 REFINES thermo_state;
70    
71      delta IS_A positive_variable;      delta IS_A positive_variable;
72      tau IS_A positive_variable;      tau IS_A positive_variable;
73            
     rho IS_A mass_density;  
     T IS_A temperature;  
       
74      (*-------------- CONSTANTS ---------------*)      (*-------------- CONSTANTS ---------------*)
75      rhoc IS_A mass_density_constant;      rhoc IS_A mass_density_constant;
76      Tc IS_A temperature_constant;      Tc IS_A temperature_constant;
# Line 370  MODEL iapws95; Line 379  MODEL iapws95;
379          + SUM[ n[i]*delta*(dDELTAbi_dtau[i] * PSI[i] +          + SUM[ n[i]*delta*(dDELTAbi_dtau[i] * PSI[i] +
380                      DELTA[i]^b[i]*dPSI_dtau[i])                     | i IN range_r4 ];                      DELTA[i]^b[i]*dPSI_dtau[i])                     | i IN range_r4 ];
381    
   
   
     phirdeltadelta_r1[range_r1] IS_A factor;  
     FOR i IN range_r1 CREATE  
         phirdeltadelta_r1[i] =  
             n[i] * d[i] * (d[i] - 1) * delta^(d[i]-2) * tau^t[i];  
     END FOR;  
   
382      phirdeltadelta_r2[range_r2] IS_A factor;      phirdeltadelta_r2[range_r2] IS_A factor;
383      FOR i IN range_r2 CREATE      FOR i IN range_r2 CREATE
384          phirdeltadelta_r2[i] =          phirdeltadelta_r2[i] =
# Line 390  MODEL iapws95; Line 391  MODEL iapws95;
391                  );                  );
392      END FOR;      END FOR;
393    
394      phirdeltadelta_r3[range_r3] IS_A factor;      phirdeltadelta IS_A factor;
395      FOR i IN range_r3 CREATE      phirdeltadelta_expr: phirdeltadelta =
396          phirdeltadelta_r3_expr[i]: phirdeltadelta_r3[i] =          SUM[
397                n[i] * d[i] * (d[i] - 1) * delta^(d[i]-2) * tau^t[i]         | i IN range_r1 ]
398            + SUM [phirdeltadelta_r2[i] | i IN range_r2 ]
399            + SUM [
400              n[i]* tau^t[i] * exp( r3_b1[i] ) * (              n[i]* tau^t[i] * exp( r3_b1[i] ) * (
401                      - 2 * alpha[i] * delta^d[i]                      - 2 * alpha[i] * delta^d[i]
402                      + 4 * alpha[i]*alpha[i] * delta^d[i] * d1^2 (* d1 = d-1 = d-eps *)                      + 4 * alpha[i]*alpha[i] * delta^d[i] * d1^2 (* d1 = d-1 = d-eps *)
403                      - 4 * d[i] * alpha[i] * delta^(d[i]-1) * d1                      - 4 * d[i] * alpha[i] * delta^(d[i]-1) * d1
404                      + d[i] * (d[i]-1) * delta^(d[i]-1)                      + d[i] * (d[i]-1) * delta^(d[i]-1)
405                  );                  )                                                        | i IN range_r3 ]
406      END FOR;          + SUM [n[i]*(
   
     phirdeltadelta_r4[range_r4] IS_A factor;  
     FOR i IN range_r4 CREATE  
         phirdeltadelta_r4[i] =  
             n[i]*(  
407                  DELTA[i]^b[i] * (2*dPSI_ddelta[i] + delta*d2PSI_ddelta2[i] )                  DELTA[i]^b[i] * (2*dPSI_ddelta[i] + delta*d2PSI_ddelta2[i] )
408                  + 2*dDELTAbi_ddelta[i] * (PSI[i] + delta*dPSI_ddelta[i])                  + 2*dDELTAbi_ddelta[i] * (PSI[i] + delta*dPSI_ddelta[i])
409                  + d2DELTAbi_ddelta2[i] * delta * PSI[i] );                  + d2DELTAbi_ddelta2[i] * delta * PSI[i] )                | i IN range_r4 ];
     END FOR;  
   
     phirdeltadelta IS_A factor;  
     phirdeltadelta_expr: phirdeltadelta =  
         SUM[ phirdeltadelta_r1[i] | i IN range_r1 ]  
         + SUM [phirdeltadelta_r2[i] | i IN range_r2 ]  
         + SUM [phirdeltadelta_r3[i] | i IN range_r3 ]  
         + SUM [phirdeltadelta_r4[i] | i IN range_r4 ];  
410    
411    
412    
# Line 460  MODEL iapws95; Line 451  MODEL iapws95;
451    
452      (*--------- THERMO PROPERTY RELATIONS ----------- *)      (*--------- THERMO PROPERTY RELATIONS ----------- *)
453    
     p IS_A pressure;  
     u IS_A specific_energy;  
     h IS_A specific_enthalpy;  
     s IS_A specific_entropy;  
     cp IS_A specific_heat_capacity;  
     cv IS_A specific_heat_capacity;  
     w IS_A speed;  
   
454      pressure: p      pressure: p
455          = rho * R * T * (1 + delta*phirdelta);          = rho * R * T * (1 + delta*phirdelta);
456    
# Line 496  MODEL iapws95; Line 479  MODEL iapws95;
479                  / (  tau^2 * (phi0tautau + phirtautau) )                  / (  tau^2 * (phi0tautau + phirtautau) )
480            );            );
481    
   
482  METHODS  METHODS
483  METHOD default_self;  METHOD default_self;
484      RUN ClearAll;      RUN ClearAll;
# Line 588  END test_3; Line 570  END test_3;
570    
571  END iapws_saturation_curves;  END iapws_saturation_curves;
572    
573  MODEL iapws95_sat;  MODEL iapws95_sat REFINES thermo_state;
574      Sf IS_A iapws95;      Sf IS_A iapws95;
575      Sg IS_A iapws95;      Sg IS_A iapws95;
576      sat IS_A iapws_saturation_curves;      sat IS_A iapws_saturation_curves;
# Line 597  MODEL iapws95_sat; Line 579  MODEL iapws95_sat;
579      Sf.T, Sg.T, sat.T ARE_THE_SAME;      Sf.T, Sg.T, sat.T ARE_THE_SAME;
580      rhof ALIASES Sf.rho;      rhof ALIASES Sf.rho;
581      rhog ALIASES Sg.rho;      rhog ALIASES Sg.rho;
582      T ALIASES Sf.T;      T, Sf.T ARE_THE_SAME;
583      p ALIASES Sf.p;      p, Sf.p ARE_THE_SAME;
584    
585      x IS_A factor;      x IS_A factor;
     rho IS_A mass_density;  
586    
587      rhog*rhof = rho*rhog + rho*(rhof - rhog) *x;      rhog*rhof = rho*rhog + rho*(rhof - rhog) *x;
588    
     u IS_A specific_energy;  
589      u = Sf.u + (Sg.u -Sf.u) *x;      u = Sf.u + (Sg.u -Sf.u) *x;
       
     h IS_A specific_enthalpy;  
     h = Sf.h + (Sg.h -Sf.h) *x;  
590    
591      s IS_A specific_entropy;      h = Sf.h + (Sg.h -Sf.h) *x;
592      s = Sf.s + (Sg.s -Sf.s) *x;      s = Sf.s + (Sg.s -Sf.s) *x;
   
     cp IS_A specific_heat_capacity;  
593      cp = Sf.cp + (Sg.cp -Sf.cp) *x;      cp = Sf.cp + (Sg.cp -Sf.cp) *x;
   
     cv IS_A specific_heat_capacity;  
594      cv = Sf.cv + (Sg.cv -Sf.cv) *x;      cv = Sf.cv + (Sg.cv -Sf.cv) *x;
595        w = Sf.w + (Sg.w - Sf.w) *x; (* check this *)
596  METHODS  METHODS
597    
598  METHOD default_self;  METHOD default_self;
# Line 640  END values; Line 613  END values;
613            
614  END iapws95_sat;          END iapws95_sat;        
615    
 (*  
 MODEL iapws95_sat(  
         rhof WILL_BE mass_density;  
         rhog WILL_BE mass_density;  
         rho WILL_BE mass_density;  
 );  
   
     Sf IS_A iapws95;  
     Sg IS_A iapws95;  
     Sf.T, Sg.T ARE_THE_SAME;  
     Sf.rho, rhof WILL_BE_THE_SAME;  
     Sg.rho, rhog WILL_BE_THE_SAME;  
   
     T ALIASES Sf.T;  
     p ALIASES Sf.p;  
     x IS_A factor;  
   
     rhog*rhof = rho*rhog + rho*(rhof - rhog) *x;  
   
     u IS_A specific_energy;  
     u = Sf.u + (Sg.u -Sf.u) *x;  
       
     h IS_A specific_enthalpy;  
     h = Sf.h + (Sg.h -Sf.h) *x;  
   
     s IS_A specific_entropy;  
     s = Sf.s + (Sg.s -Sf.s) *x;  
   
     cp IS_A specific_heat_capacity;  
     cp = Sf.cp + (Sg.cp -Sf.cp) *x;  
   
     cv IS_A specific_heat_capacity;  
     cv = Sf.cv + (Sg.cv -Sf.cv) *x;  
   
     * not sure if the following is true... *  
     w IS_A speed;  
     w = Sf.w + (Sg.w -Sf.w) *x;  
   
 END iapws95_sat;  
 *)  

Legend:
Removed from v.106  
changed lines
  Added in v.107

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