/[ascend]/trunk/doc/howto-atoms.lyx
ViewVC logotype

Contents of /trunk/doc/howto-atoms.lyx

Parent Directory Parent Directory | Revision Log Revision Log


Revision 826 - (show annotations) (download) (as text)
Tue Aug 22 01:34:33 2006 UTC (12 years, 2 months ago) by johnpye
File MIME type: application/x-lyx
File size: 28436 byte(s)
Increased max ext relations to 50.
Changed default web browser on linux to firefox.
Copied documentation files into source tree
Added build script to allow HTML and PDF generation via SCons.

1 #LyX 1.4.1 created this file. For more info see http://www.lyx.org/
2 \lyxformat 245
3 \begin_document
4 \begin_header
5 \textclass book
6 \language english
7 \inputencoding auto
8 \fontscheme default
9 \graphics default
10 \paperfontsize default
11 \spacing single
12 \papersize a4paper
13 \use_geometry false
14 \use_amsmath 2
15 \cite_engine basic
16 \use_bibtopic false
17 \paperorientation portrait
18 \secnumdepth 3
19 \tocdepth 3
20 \paragraph_separation indent
21 \defskip medskip
22 \quotes_language english
23 \papercolumns 1
24 \papersides 2
25 \paperpagestyle default
26 \tracking_changes false
27 \output_changes true
28 \end_header
29
30 \begin_body
31
32 \begin_layout Chapter
33 Defining Variables and Scaling Values
34 \begin_inset LatexCommand \label{cha:atoms}
35
36 \end_inset
37
38
39 \end_layout
40
41 \begin_layout Standard
42 \begin_inset Marginal
43 status collapsed
44
45 \begin_layout Standard
46 the purpose of this chapter
47 \end_layout
48
49 \end_inset
50
51 By now you have probably read Chapter\InsetSpace ~
52
53 \begin_inset LatexCommand \vref{cha:model1}
54
55 \end_inset
56
57 and seen an example of how to create a model using existing variable types
58 in ASCEND.
59 You found that variables of types area, length, mass, mass_density, and
60 volume were needed and that they could be found in the library
61 \family typewriter
62 atoms.a4l
63 \family default
64 .
65 You want to know how to generalize on that; how to use variables, constants,
66 and scaling values in your own models so that the models will be easier
67 to solve.
68 \end_layout
69
70 \begin_layout Standard
71 This chapter is meant to explain the following things:
72 \end_layout
73
74 \begin_layout Itemize
75 The "Big Picture" of how variables, constants, and scaling values relate
76 to the rest of the ASCEND IV language and to equations in particular.
77 We'll keep it simple here.
78 More precise explanations for the language purist can be found in our syntax
79 document **syntax.fm5**.
80 You do not need to read about the "Big Picture" in order to read and use
81 the other parts of this chapter, but you may find it helpful if you are
82 having trouble writing an equation
83 \begin_inset LatexCommand \index{equation, writing}
84
85 \end_inset
86
87 so that ASCEND will accept it.
88 \end_layout
89
90 \begin_layout Itemize
91 How to find the type of variable (or constant) you want.
92 We keep a mess of interesting
93 \family typewriter
94 ATOM
95 \family default
96 and
97 \family typewriter
98 CONSTANT
99 \family default
100 definitions in
101 \family typewriter
102 atoms.a4l
103 \family default
104 .
105 We provide tools to search in already loaded libraries to locate the type
106 you need.
107 \end_layout
108
109 \begin_layout Itemize
110 How to define a new type of variable when we do not have a predefined
111 \family typewriter
112 ATOM
113 \family default
114 or
115 \family typewriter
116 CONSTANT
117 \family default
118 that suits your needs.
119 It is very easy to define your own variable types by copying code into
120 an atoms library of your own from
121 \family typewriter
122 atoms.a4l
123 \family default
124 and then editing the copied definition.
125 \end_layout
126
127 \begin_layout Itemize
128 How to define a scaling variable to make your equations much easier to solve.
129 \end_layout
130
131 \begin_layout Section
132 The Big Picture: a taxonomy
133 \begin_inset LatexCommand \index{taxonomy}
134
135 \end_inset
136
137
138 \end_layout
139
140 \begin_layout Standard
141 As you read in Chapter\InsetSpace ~
142
143 \begin_inset LatexCommand \ref{cha:model1}
144
145 \end_inset
146
147 , simulations are built from MODEL and ATOM definitions, and MODEL and ATOM
148 definitions are defined by creating types in an ASCEND language text file
149 that you load into the ASCEND system.
150 Figure
151 \begin_inset LatexCommand \ref{fig:atoms.taxonomy}
152
153 \end_inset
154
155
156 \noun off
157 shows the types of objects that can be defined.
158 You can see there are many more types than simply real variables used for
159 writing equations.
160 Some of these types can also be used in equations.
161 You also see that there are three kinds of equations, not simply real relations.
162 Throughout our documentation we call real relations simply "relations"
163 because that is the kind of equation most people are interested in most
164 of the time.
165 Notice that "scaling values" do not appear in this diagram.
166 We will cover scaling values at the end of this The major features of this
167 diagram are:
168 \end_layout
169
170 \begin_layout Standard
171 \begin_inset Float figure
172 wide false
173 sideways false
174 status open
175
176 \begin_layout Standard
177
178 \noun off
179 \begin_inset Graphics
180 filename howto-atomsFig1.eps
181 scale 90
182 BoundingBox 20bp 0bp 600bp 320bp
183 clip
184
185 \end_inset
186
187
188 \end_layout
189
190 \begin_layout Caption
191 \begin_inset LatexCommand \label{fig:atoms.taxonomy}
192
193 \end_inset
194
195 The big picture: how to think about variables
196 \end_layout
197
198 \end_inset
199
200
201 \end_layout
202
203 \begin_layout Paragraph
204
205 \noun off
206 \begin_inset LatexCommand \index{atom}
207
208 \end_inset
209
210
211 \noun default
212 ATOM
213 \end_layout
214
215 \begin_layout Itemize
216 Any variable quantity for use in relations, logical relations, or when statement
217 s or other computations.
218 These come in the usual programming language flavors real, boolean, symbol,
219 integer.
220 Not all kinds of atoms can be used in all kinds of equations, as we shall
221 explain when describing relations in a little bit.
222 Atoms may be assigned values many times interactively, with the Script
223 ASSIGN statement, with the METHOD := assignment operator, or by an ASCEND
224 client such as a solver.
225 \end_layout
226
227 \begin_layout Standard
228 An ATOM may have attributes other than its value, such as .fixed in solver_var,
229 but these attributes are not atoms.
230 They are subatomic particles and cannot be used in equations.
231 These attributes are interpretable by ASCEND clients, and assignable by
232 the user in the same ways that the user assigns atom values.
233 \end_layout
234
235 \begin_layout Standard
236 Each subatomic particle instance belongs to exactly one atom instance (one
237 variable in your compiled simulation).
238 This contrasts with an atom instance which can be shared among several
239 models by passing the atom instance from one model into another or by creating
240 aliases for it.
241 \end_layout
242
243 \begin_layout Paragraph
244 \begin_inset LatexCommand \index{constant}
245
246 \end_inset
247
248 CONSTANT
249 \end_layout
250
251 \begin_layout Itemize
252 Constants are "variables" that can be assigned no more than once.
253 By convention, all constant types in atoms.a4l have names that end in _constant
254 so that they are not easily confused with atoms.
255 A constant gets a values from the DEFAULT portion of its type definition,
256 by an interactive assignment, or by an assignment in the a model which
257 uses the :== assignment operator.
258 Constants cannot be assigned in a METHOD, nor can they be assigned with
259 the := operator.
260 \end_layout
261
262 \begin_layout Standard
263 Integer and symbol constants can appear as members of sets or as subscripts
264 of arrays.
265 Integer, boolean, and symbol constants can be used to control SELECT statements
266 which determine your simulation's structure at compile-time or to control
267 SWITCH and WHEN behavior during problem solving .
268 \end_layout
269
270 \begin_layout Paragraph
271 \begin_inset LatexCommand \index{set}
272
273 \end_inset
274
275 set
276 \end_layout
277
278 \begin_layout Itemize
279 Sets are unordered lists of either integer or symbol constants.
280 A set is assigned its value exactly once.
281 The user interface always presents a set in sorted order, but this is for
282 convenience only.
283 Sets are useful for defining an array range or for writing indexed relations.
284 More about sets and their use can be found in **syntax.fm5**.
285 \end_layout
286
287 \begin_layout Paragraph
288 \begin_inset LatexCommand \index{relationship}
289
290 \end_inset
291
292 relationships
293 \end_layout
294
295 \begin_layout Itemize
296 Relations and logical relations allow you to state
297 \begin_inset LatexCommand \index{equalities}
298
299 \end_inset
300
301 equalities and
302 \begin_inset LatexCommand \index{inequalitites}
303
304 \end_inset
305
306 inequalities among the variables and constants in you models.
307 WHEN statements allow you to state relationships among the models and equations
308 which depend on the values of variables in those models.
309 Sets and symbols are not allowed in real or logical relations except when
310 used as array subscripts.
311 \end_layout
312
313 \begin_layout Standard
314 Real
315 \begin_inset LatexCommand \index{real}
316
317 \end_inset
318
319
320 \begin_inset LatexCommand \index{relation, real}
321
322 \end_inset
323
324 relations relate the values of real atoms, real constants, and integer constants.
325 Real relations cannot contain boolean constants and atoms, nor can they
326 contain integer atoms.
327
328 \end_layout
329
330 \begin_layout Standard
331 Logical
332 \begin_inset LatexCommand \index{logical}
333
334 \end_inset
335
336 relations
337 \begin_inset LatexCommand \index{logical relation}
338
339 \end_inset
340
341 relate the values of boolean atoms and boolean constants.
342 The
343 \family typewriter
344 SATISFIED
345 \family default
346
347 \begin_inset LatexCommand \index{SATISFIED}
348
349 \end_inset
350
351 operator makes it possible to include real relations in a logical relation.
352 Neither integer atoms and constants nor real atoms and constants are allowed
353 in logical relations.
354 If you find yourself trying to write an equation with integer atoms, you
355 are really creating a conditional model for which you should use the WHEN
356 statement instead.
357 See **conditional modeling** to learn about how ASCEND represents this
358 kind of mathematical model.
359 There are also a real variable types, solver_integer and solver_binary,
360 which are used to formulate equations when the solver is expected to initially
361 treat the variable as a real value but drive it to an integer or 0-1 value
362 at the solution.
363 The integer programming features of ASCEND are described **elsewhere**.
364 \end_layout
365
366 \begin_layout Standard
367 Like atoms, real and logical relations may have attributes, subatomic particles
368 for use by ASCEND clients and users.
369 The name of a relation can be used in writing logical relations and WHEN
370 statements.
371
372 \end_layout
373
374 \begin_layout Standard
375 WHEN statements are outside the scope of this chapter; please see **conditional
376 modeling** or **syntax.fm5** for the details.
377 \end_layout
378
379 \begin_layout Paragraph
380 \begin_inset LatexCommand \index{model}
381
382 \end_inset
383
384
385 \family typewriter
386 MODEL
387 \end_layout
388
389 \begin_layout Itemize
390 A model is simply a container for a collection of atoms, constants, sets,
391 relations, logical relations, when statements, and arrays of any of these.
392 The container also specifies some of the methods that can be used to manipulate
393 its contents.
394 Compiling a model creates an instance of it-- a simulation
395 \begin_inset LatexCommand \index{simulation}
396
397 \end_inset
398
399 .
400 \end_layout
401
402 \begin_layout Paragraph
403
404 \family typewriter
405 SOLVER_VAR
406 \end_layout
407
408 \begin_layout Itemize
409 The real atom type
410 \family typewriter
411 solver_var
412 \family default
413 is the type from which all real variables that you want the system to solve
414 for must spring.
415 If you define a real variable using a type which is not a refinement of
416
417 \family typewriter
418 solver_var
419 \family default
420 , all solvers will treat that variable as an a scaling value or other given
421 constant rather than as a variable.
422
423 \end_layout
424
425 \begin_layout Standard
426 Solver_vars have a number of subatomic attributes (
427 \family typewriter
428 upper_bound
429 \family default
430 ,
431 \family typewriter
432 lower_bound
433 \family default
434 , and so forth) that help solvers find the solution of your model.
435 ATOM definitions specify appropriate default values for these attributes
436 that depend on the expected applications of the atom.
437 These attribute values can (and should) be modified by methods in the final
438 application model where the most accurate problem information is available.
439 \end_layout
440
441 \begin_layout Paragraph
442 Scaling
443 \begin_inset LatexCommand \index{scaling}
444
445 \end_inset
446
447 value
448 \end_layout
449
450 \begin_layout Itemize
451 A real that is not a member of the
452 \family typewriter
453 solver_var
454 \family default
455 family is ignored by the solver.
456 Numerical solvers for problems with many equations in many variables work
457 better if the error computed for each equation (before the system is solved)
458 is of approximately size 1.0.
459 This is most critical when you are starting to solve a new problem at values
460 far, far away from the solution.
461 When the error of one equation is much larger than the errors in the others,
462 that error will skew the behavior of most numerical solvers and will cause
463 poor performance.
464
465 \end_layout
466
467 \begin_layout Standard
468 This is one of the many reasons that scientists and engineers work with
469 dimensionless models
470 \begin_inset LatexCommand \index{dimensionless models}
471
472 \end_inset
473
474 : the process of scaling the equations into dimensionless form has the effect
475 of making the error of each equation roughly the same size even far away
476 from the solution.
477 It is sometimes easiest to obtain a dimensionless equation by writing the
478 equation in its dimensional form using natural variables and then dividing
479 both sides by an appropriate scaling value.
480 We will see how to define an atom for scaling purposes in the last part
481 of this chapter.
482 \end_layout
483
484 \begin_layout Section
485 How to find the right variable type
486 \begin_inset LatexCommand \index{type, variable}
487
488 \end_inset
489
490
491 \end_layout
492
493 \begin_layout Standard
494 The type of real atom you want to use depends first on the dimensionality
495 (length, mass/time, etc.) needed and then on the application in which the
496 atom is going to be used.
497 For example, if you are modeling a moving car and you want an atom type
498 to describe the car's speed, then you need to find an atom with dimensionality
499 length/time or in ASCEND terms L/T.
500 There may be two or three types with this dimensionality, possibly including
501 real_constants, a real scaling value, and an atom derived from solver_var.
502 \end_layout
503
504 \begin_layout Standard
505 \begin_inset Marginal
506 status collapsed
507
508 \begin_layout Standard
509 Load atoms.a4l
510 \end_layout
511
512 \end_inset
513
514 The first step to finding the variable type needed is to make sure that
515 atoms.a4l is loaded in your Library window from
516 \family typewriter
517 ascend4/models/atoms.a4l
518 \family default
519 .
520 \end_layout
521
522 \begin_layout Standard
523 \begin_inset Marginal
524 status collapsed
525
526 \begin_layout Standard
527 Find an ATOM or CONSTANT by units
528 \end_layout
529
530 \end_inset
531
532 The next step is to open the "ATOM by units" dialog found in the Library
533 window's Find menu.
534 This dialog asks for the units of the real variable type you want.
535 For our example, speed, you would enter "feet/second," "furlongs/fortnight,"
536 "meter^3/second/ft^2" or any other combination of units that corresponds
537 to the dimensionality L/T.
538
539 \end_layout
540
541 \begin_layout Standard
542 If the system is able to deduce the dimensionality of the units you have
543 entered, it will return a list of all the currently loaded ATOM and CONSTANT
544 definitions with matching dimensions.
545 It may fail to understand the units, in which case you should try the correspon
546 ding SI units.
547 If it understands the units but there are no matching atoms or constants,
548 you will be duly informed.
549 If there is no atom that meets your needs, you should create one as outlined
550 in **the next section**.
551 \end_layout
552
553 \begin_layout Standard
554 \begin_inset Marginal
555 status collapsed
556
557 \begin_layout Standard
558 Selecting the right type
559 \end_layout
560
561 \end_inset
562
563 The resulting list of types includes a Code button which will display the
564 definition of any of the types listed once you select (highlight) that
565 type with the mouse.
566 Usually you will need to examine several of the alternatives to see which
567 one is most appropriate to the physics and mathematics of your problem.
568 Compare the default, bounds, and nominal values defined to those you need.
569 Check whether the type you are looking at is a
570 \family typewriter
571 CONSTANT
572 \family default
573 or an
574 \family typewriter
575 ATOM
576 \family default
577 .
578
579 \end_layout
580
581 \begin_layout Standard
582 You now know the name of the variable type you need, or you know that you
583 must create a new one to suit your needs.
584 \end_layout
585
586 \begin_layout Section
587 How to define a new type of variable
588 \begin_inset LatexCommand \index{type, variable}
589
590 \end_inset
591
592
593 \begin_inset LatexCommand \label{ssec:atoms.newVarType}
594
595 \end_inset
596
597
598 \end_layout
599
600 \begin_layout Standard
601 In this section we will give examples of defining the atom and constant
602 types as well as outline a few exceptional situations when you should NOT
603 define a new type.
604 More examples can be found and copied from
605 \family typewriter
606 atoms.a4l
607 \family default
608 .
609 You should define your new atoms in your personal atoms library.
610
611 \end_layout
612
613 \begin_layout Standard
614 \begin_inset Marginal
615 status collapsed
616
617 \begin_layout Standard
618 Saving customized variable types
619 \end_layout
620
621 \end_inset
622
623 The user data file
624 \family typewriter
625 ~
626 \backslash
627 ascdata
628 \backslash
629 myatoms.a4l
630 \family default
631 is the normal location for a personal
632 \begin_inset LatexCommand \index{library, personal}
633
634 \end_inset
635
636 library.
637 This file contains the following three lines and then the
638 \family typewriter
639 ATOM
640 \family default
641 and
642 \family typewriter
643 CONSTANT
644 \family default
645 definitions you create.
646 \end_layout
647
648 \begin_layout LyX-Code
649 REQUIRE "atoms.a4l"; (* loads our atoms first *)
650 \end_layout
651
652 \begin_layout LyX-Code
653 PROVIDE "myatoms.a4l"; (* registers your library *)
654 \end_layout
655
656 \begin_layout LyX-Code
657 (* Custom atoms created by <insert your name here> *)
658 \end_layout
659
660 \begin_layout Standard
661 If you develop an interesting set of atoms for some problem domain outside
662 chemical engineering thermodynamics, please consider mailing it to us through
663 our web page.
664
665 \end_layout
666
667 \begin_layout Standard
668 The user data directory
669 \family typewriter
670 ~/
671 \begin_inset LatexCommand \index{ascdata}
672
673 \end_inset
674
675 ascdata
676 \family default
677 may have a different name if you are running under Windows and do not have
678 the environment variable HOME
679 \begin_inset LatexCommand \index{HOME}
680
681 \end_inset
682
683 defined.
684 It may be something like C:
685 \backslash
686 ascdata or
687 \backslash
688 WINNT
689 \backslash
690 Profiles
691 \backslash
692 Your Name
693 \backslash
694 ascdata.
695 When ASCEND is started, it prints out the name of this directory.
696 \end_layout
697
698 \begin_layout Standard
699 When you write a
700 \family typewriter
701 MODEL
702 \family default
703 which depends on the definition of your new atoms, do not forget to add
704 the statement
705 \end_layout
706
707 \begin_layout LyX-Code
708 REQUIRE "myatoms.a4l";
709 \end_layout
710
711 \begin_layout Standard
712 at the very top of your model file so that your atoms will be loaded before
713 your model definitions try to use them.
714 \end_layout
715
716 \begin_layout Subsection
717 A new real variable for solver use
718 \end_layout
719
720 \begin_layout Standard
721 Suppose you need an atom with units {dollar/ft^2/year} for some equation
722 relating amortized construction costs to building size.
723 Maybe this example is a bit far fetched, but it is a safe bet that our
724 library is not going to have an atom or a constant for these units.
725 Here is the standard incantation for defining a new variable type based
726 on
727 \family typewriter
728 solver_var
729 \family default
730 .
731 ASCEND allows a few permutations on this incantation, but they are of no
732 practical value.
733 The parts of this incantation that are in italics should be changed to
734 match your needs.
735 You can skip the comments, but you
736 \emph on
737 must
738 \emph default
739 include the units of the default on the bounds and nominal.
740 \end_layout
741
742 \begin_layout LyX-Code
743 ATOM amortized_area_cost
744 \end_layout
745
746 \begin_layout LyX-Code
747 REFINES solver_var DEFAULT 3.0 {dollar/ft^2/year};
748 \end_layout
749
750 \begin_layout LyX-Code
751 lower_bound := 0 {dollar/ft^2/year};
752 \end_layout
753
754 \begin_layout LyX-Code
755 (* minimum value *)
756 \end_layout
757
758 \begin_layout LyX-Code
759 upper_bound := 10000 {dollar/ft^2/year};
760 \end_layout
761
762 \begin_layout LyX-Code
763 (* maximum value for any sane application *)
764 \end_layout
765
766 \begin_layout LyX-Code
767 nominal := 10 {dollar/ft^2/year};
768 \end_layout
769
770 \begin_layout LyX-Code
771 (* expected size for all reasonable applications*)
772 \end_layout
773
774 \begin_layout LyX-Code
775 END amortized_area_cost;
776 \end_layout
777
778 \begin_layout Standard
779 In picking the name of your atom, remember that names should be as self-explanat
780 ory as possible.
781 Also avoid choosing a name that ends in _constant (as this is conventionally
782 applied only to CONSTANT
783 \begin_inset LatexCommand \index{CONSTANT}
784
785 \end_inset
786
787 definitions) or _parameter.
788 Parameter is an extremely ambiguous and therefore useless word.
789 Also remember that the role a variable plays in solving a set of equations
790 depends on how the solver being applied interprets .fixed and other attributes
791 of the variable.
792 \end_layout
793
794 \begin_layout Standard
795 \begin_inset Marginal
796 status collapsed
797
798 \begin_layout Standard
799 Exceptions
800 \end_layout
801
802 \end_inset
803
804 If an atom type matches all but one of the attributes you need for your
805 problem, say for example the
806 \family typewriter
807 upper_bound
808 \family default
809 is way too high, use the existing variable type and reassign the bound
810 to a more sensible value in the
811 \family typewriter
812 default_self
813 \family default
814 method of the model where the variable is created.
815 Having a dozen atoms defined for the same units gets confusing in short
816 order to anyone you might share your models with.
817 \end_layout
818
819 \begin_layout Standard
820 The exception to the exception (yes, there always seems to be one of those)
821 is the case of a
822 \family typewriter
823 lower_bound
824 \family default
825 set at zero.
826 Usually a
827 \family typewriter
828 lower_bound
829 \family default
830 of zero indicates that there is something inherently positive about variables
831 of that type.
832 Variables with a bound of this type should not have these physical bounds
833 expanded in an application.
834 Another example of this type of bound is the
835 \family typewriter
836 upper_bound
837 \family default
838 1.0 on the type fraction.
839 \end_layout
840
841 \begin_layout Standard
842 For example, negative temperature just is not sensible for most physical
843 systems.
844 ASCEND defines a temperature atom for use in equations involving the absolute
845 temperature.
846 On the other hand, a temperature difference, delta T, is frequently negative
847 so a separate atom is defined.
848 Anyone receiving a model written using the two types of atoms, which both
849 have units of {Kelvin}, can easily tell which variables might legitimately
850 take on negative values by noting whether the variable is defined as a
851 temperature or a delta_temperature.
852 \end_layout
853
854 \begin_layout Subsection
855 A new real constant
856 \begin_inset LatexCommand \index{real constant}
857
858 \end_inset
859
860
861 \begin_inset LatexCommand \index{constant, real}
862
863 \end_inset
864
865 type
866 \end_layout
867
868 \begin_layout Standard
869 Real constants which do not have a default value are usually needed only
870 in libraries of reusable models, such as
871 \family typewriter
872 components.a4l
873 \family default
874 , where the values depend on the end-user's selection from alternatives
875 in a database.
876 The standard incantation to define a new real constant type is:
877 \end_layout
878
879 \begin_layout LyX-Code
880 CONSTANT
881 \shape italic
882 critical_pressure_constant
883 \end_layout
884
885 \begin_layout LyX-Code
886 REFINES real_constant DIMENSION
887 \shape italic
888 M/L/T^2
889 \shape default
890 ;
891 \end_layout
892
893 \begin_layout Standard
894 Here again, the italic parts of this incantation should be redefined for
895 your purpose.
896 \end_layout
897
898 \begin_layout Standard
899 \begin_inset Marginal
900 status collapsed
901
902 \begin_layout Standard
903 Universal exceptions and unit conversions
904 \end_layout
905
906 \end_inset
907
908 It is wasteful to define a
909 \family typewriter
910 CONSTANT
911 \family default
912 type and a compiled object to represent a universal
913 \begin_inset LatexCommand \index{universal constant}
914
915 \end_inset
916
917
918 \begin_inset LatexCommand \index{constant, universal}
919
920 \end_inset
921
922 constant.
923 For example, the thermodynamic gas constant, R = 8.314...
924 {J/mole/K}, is frequently needed in modeling chemical systems.
925 The SI value of R does not vary with its application.
926 Neither does the value of
927 \begin_inset LatexCommand \index{pi}
928
929 \end_inset
930
931
932 \begin_inset Formula $\pi$
933 \end_inset
934
935 .
936 Numeric constants of this sort are better represented as a numeric coefficient
937 and an appropriately defined unit conversion.
938 Consider the
939 \begin_inset LatexCommand \index{ideal gas law}
940
941 \end_inset
942
943 ideal gas law, PV = NRT and the ASCEND unit conversion {GAS_C} which appears
944 in the library ascend4/models/measures.a4l.
945 This equation should be written:
946 \end_layout
947
948 \begin_layout LyX-Code
949 P * V = n * 1.0{GAS_C} * T;
950 \end_layout
951
952 \begin_layout Standard
953 Similarly, area = pi*r^2 should be written
954 \end_layout
955
956 \begin_layout LyX-Code
957 area = 1{PI} * r^2;
958 \end_layout
959
960 \begin_layout Standard
961 The coefficient 1 of
962 \family typewriter
963 {GAS_C}
964 \family default
965 and {PI} in these equations takes of the dimensionality of and is multiplied
966 by the conversion factor implied by the
967 \family typewriter
968 UNITS
969 \family default
970 definition for the units.
971 If we check
972 \family typewriter
973 measures.a4l
974 \family default
975 , we find the definition of PI is simply {3.14159...} and the definition of
976
977 \family typewriter
978 GAS_C
979 \family default
980 is {8.314...
981 J/mole/K} as we ought to expect.
982 \end_layout
983
984 \begin_layout Standard
985 For historical reasons there are a few universal constant definitions in
986
987 \family typewriter
988 atoms.a4l
989 \family default
990 .
991 New modelers should not use them; they are only provided to support outdated
992 models that no one has yet taken the time to update.
993 \end_layout
994
995 \begin_layout Subsection
996 New types for integers, symbols, and booleans
997 \end_layout
998
999 \begin_layout Standard
1000 The syntax for
1001 \family typewriter
1002 ATOM
1003 \family default
1004 and
1005 \family typewriter
1006 CONSTANT
1007 \family default
1008 definitions of the non-real types is the same as for real number types,
1009 except that units are not involved.
1010 Take your best guess based on the examples above, and you will get it right.
1011 If even that is too hard, more details are given in **syntax.fm5**.
1012 \end_layout
1013
1014 \begin_layout Section
1015 How to define a
1016 \begin_inset LatexCommand \index{scaling}
1017
1018 \end_inset
1019
1020 scaling variable
1021 \end_layout
1022
1023 \begin_layout Standard
1024 A scaling variable
1025 \family typewriter
1026 ATOM
1027 \family default
1028 is defined with a name that ends in _scale as follows.
1029 Note that this
1030 \family typewriter
1031 ATOM
1032 \family default
1033 does not refine
1034 \family typewriter
1035 solver_var
1036 \family default
1037 , so solvers will not try to change variables of this type during the solution
1038 process.
1039 \end_layout
1040
1041 \begin_layout LyX-Code
1042 ATOM distance_scale REFINES real DEFAULT 1.0{meter};
1043 \end_layout
1044
1045 \begin_layout LyX-Code
1046 END distance_scale;
1047 \end_layout
1048
1049 \begin_layout Standard
1050 \begin_inset Marginal
1051 status collapsed
1052
1053 \begin_layout Standard
1054 ASCEND cannot do it all for you
1055 \end_layout
1056
1057 \end_inset
1058
1059 ASCEND uses a combination of symbolic and numerical techniques to create
1060 and solve mathematical problems.
1061 Once you get the problem close to the solution, ASCEND can internally compute
1062 its own scaling values for relations, known elsewhere as "relation nominals
1063 \begin_inset LatexCommand \index{nominals}
1064
1065 \end_inset
1066
1067 ,
1068 \begin_inset Quotes erd
1069 \end_inset
1070
1071 assuming you have set good values for the .nominal attribute of all the
1072 variables.
1073 It does this by computing the largest additive term in each equation.
1074 The absolute value of this term is a very good scaling value.
1075 \end_layout
1076
1077 \begin_layout Standard
1078 This internal scaling works quite well, but not when the problem is very
1079 far away from the solution so that the largest additive terms computed
1080 are not at all representative of the physical situation being modeled.
1081 The
1082 \family typewriter
1083 scale_self
1084 \family default
1085
1086 \begin_inset LatexCommand \index{scale\_self}
1087
1088 \end_inset
1089
1090 method, which should be written for every model as described in Section\InsetSpace ~
1091
1092 \begin_inset LatexCommand \ref{sssec:methods.scaleself}
1093
1094 \end_inset
1095
1096 of Chapter
1097 \noun off
1098 \InsetSpace ~
1099
1100 \begin_inset LatexCommand \vref{cha:methods}
1101
1102 \end_inset
1103
1104 should set the equation scaling values you have defined in a
1105 \family typewriter
1106 \noun default
1107 MODEL
1108 \family default
1109 \noun off
1110 based on the best available information.
1111 In a chemical engineering flowsheeting problem, for example, information
1112 about a key process material flow should be propagated throughout the process
1113 flowsheet to scale all the other flows, material balance equations, and
1114 energy balance equations.
1115 \end_layout
1116
1117 \begin_layout Standard
1118 \begin_inset Marginal
1119 status collapsed
1120
1121 \begin_layout Standard
1122 Scaling atom default value
1123 \end_layout
1124
1125 \end_inset
1126
1127 The
1128 \begin_inset LatexCommand \index{default value}
1129
1130 \end_inset
1131
1132 default value for any scaling atom should always be 1.0 in appropriate SI
1133 units, so that the scaling will have no effect until you assign a problem
1134 specific value.
1135 Multiplying or dividing both sides of an equation by 1.0 obviously will
1136 not change the mathematical behavior, but you do not want to change the
1137 behavior arbitrarily either-- you want to change it based on problem informatio
1138 n that is not contained in your
1139 \family typewriter
1140 myatoms.a4l
1141 \family default
1142 file.
1143 \end_layout
1144
1145 \end_body
1146 \end_document

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