Hi all !
Here's a simple Feed--->Reactor--->Product model in ASCEND.
Regards.
Shubham
(*A Simple Feed--->Reactor--->Product Flowsheet in ASCEND*)
(*Shubham Singh Tomar*)
REQUIRE "atoms.a4l";
PROVIDE "simpleflowsheet01.a4c";
(*Defining Feed Characteristics*)
MODEL mixture;
components IS_A set OF symbol_constant;
y[components] IS_A fraction;
SUM[y[i] | i IN components] = 1.0;
METHODS
METHOD default_self;
END default_self;
METHOD specify;
FIX y[components];
FREE y[CHOICE[components]];
END specify;
METHOD reset;
RUN ClearAll;
RUN specify;
END reset;
END mixture;
MODEL molar_stream;
components IS_A set OF symbol_constant;
state IS_A mixture;
Ftot,f[components] IS_A molar_rate;
components, state.components ARE_THE_SAME;
FOR i IN components CREATE
f_def[i]: f[i] = Ftot*state.y[i];
END FOR;
METHODS
METHOD default_self;
END default_self;
METHOD seqmod;
RUN state.specify;
FREE state.y[components];
END seqmod;
METHOD specify;
RUN seqmod;
FIX f[components];
END specify;
METHOD reset;
RUN ClearAll;
RUN specify;
END reset;
METHOD scale;
FOR i IN components DO
f[i].nominal := f[i] + 0.1{mol/s};
END FOR;
Ftot.nominal := Ftot + 0.1{mol/s};
END scale;
END molar_stream;
MODEL mixer;
n_inputs IS_A integer_constant;
feed[1..n_inputs], out IS_A molar_stream;
feed[1..n_inputs].components,
out.components ARE_THE_SAME;
FOR i IN out.components CREATE
cmb[i]: out.f[i] = SUM[feed[1..n_inputs].f[i]];
END FOR;
METHODS
METHOD default_self;
END default_self;
METHOD seqmod;
END seqmod;
METHOD specify;
RUN seqmod;
RUN feed[1..n_inputs].specify;
END specify;
METHOD reset;
RUN ClearAll;
RUN specify;
END reset;
METHOD scale;
RUN feed[1..n_inputs].scale;
RUN out.scale;
END scale;
END mixer;
(*Reactor*)
MODEL reactor;
feed, out IS_A molar_stream;
feed.components, out.components ARE_THE_SAME;
turnover IS_A molar_rate;
stoich_coef[feed.components] IS_A factor;
FOR i IN feed.components CREATE
out.f[i] = feed.f[i] + stoich_coef[i]*turnover;
END FOR;
METHODS
METHOD default_self;
END default_self;
METHOD seqmod;
FIX turnover;
FIX stoich_coef[feed.components];
END seqmod;
METHOD specify;
RUN seqmod;
RUN feed.specify;
END specify;
METHOD reset;
RUN ClearAll;
RUN specify;
END reset;
METHOD scale;
RUN feed.scale;
RUN out.scale;
turnover.nominal := turnover.nominal+0.0001 {kg_mole/s};
END scale;
END reactor;
(*Test model, Product*)
MODEL test_flowsheet REFINES flowsheet;
m1.out.components :== ['A','B','C'];
METHODS
METHOD default_self;
(* no-op. here to avoid STOP statement. *)
END default_self;
METHOD values;
m1.feed[1].f['A'] := 0.010 {kg_mole/s};
m1.feed[1].f['B'] := 0.080 {kg_mole/s};
m1.feed[1].f['C'] := 0.010 {kg_mole/s};
r1.stoich_coef['A'] := 0;
r1.stoich_coef['B'] := -1;
r1.stoich_coef['C'] := 1;
fl1.alpha['A'] := 12.0;
fl1.alpha['B'] := 10.0;
fl1.alpha['C'] := 1.0;
fl1.vap_to_feed_ratio := 0.9;
fl1.ave_alpha := 5.0;
sp1.split[1] := 0.01;
fl1.liq.Ftot := m1.feed[1].f['B'];
END values;
END test_flowsheet;
------------------------------------------------------------------------------
AlienVault Unified Security Management (USM) platform delivers complete
security visibility with the essential security capabilities. Easily and
efficiently configure, manage, and operate all of your security controls
from a single console and one unified framework. Download a free trial.
http://p.sf.net/sfu/alienvault_d2d
_______________________________________________
Ascend-sim-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ascend-sim-users