User:Ujjavalverma10: Difference between revisions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
== A Proposed solution for issue 459 == | == A Proposed solution for issue 459 == | ||
[http://ascendbugs.cheme.cmu.edu/view.php?id=459 Issue 459] demands a way to assign values a range of array elements. | [http://ascendbugs.cheme.cmu.edu/view.php?id=459 Issue 459] demands a way to assign values to a range of array elements. It is in fact true that Python can't address range of array elements. This is not covered by the syntax of the language and supporting this feature would require a patch for Python language itself (not ASCEND). | ||
I propose an alternate way to assign values to a range of array elements. | |||
=1. Assigning a value to all elements of an array= | |||
<source> | |||
a = [5]*length; | |||
</source> | |||
here <i>length</i> can be the length of array 'a' ie: len(a) if <b>a</b> is already initialized or it can be a numerical value if <b>a</b> is being initialized right now. | |||
example: | |||
<source> | |||
>>> a = [2]*6; | |||
>>> a | |||
[2,2,2,2,2,2] | |||
</source> | |||
=2. Assigning a value to a partial range of elements of an array= | |||
<source> | |||
for i in range(0,5): | |||
a[i] = 1; | |||
</source> | |||
This will produce the desired effect. | |||
example: | |||
<source> | |||
a = [4]*10 | |||
for i in range(0,4): | |||
a[i] = 5; | |||
print a; | |||
</source> | |||
output : [5, 5, 5, 5, 4, 4, 4, 4, 4, 4] | |||
Revision as of 02:22, 8 April 2011
A Proposed solution for issue 459
Issue 459 demands a way to assign values to a range of array elements. It is in fact true that Python can't address range of array elements. This is not covered by the syntax of the language and supporting this feature would require a patch for Python language itself (not ASCEND). I propose an alternate way to assign values to a range of array elements.
1. Assigning a value to all elements of an array
You need to specify a language like this: <source lang="html">...</source>
Supported languages for syntax highlighting:
a4c, abap, abc, abnf, actionscript, ada, agda, alan, algol, ampl, amtrix, applescript, arc, arm, as400cl, ascend, asciidoc, asp, aspect, assembler, ats, autohotkey, autoit, avenue, awk, ballerina, bat, bbcode, bcpl, bibtex, biferno, bison, blitzbasic, bms, bnf, boo, c, carbon, ceylon, charmm, chill, chpl, clean, clearbasic, clipper, clojure, clp, cmake, cobol, coffeescript, coldfusion, conf, cpp2, critic, crk, crystal, cs_block_regex, csharp, css, d, dart, delphi, diff, dockerfile, dts, dylan, ebnf, ebnf2, eiffel, elixir, elm, email, erb, erlang, euphoria, exapunks, excel, express, factor, fame, fasm, felix, fish, fortran77, fortran90, frink, fsharp, fstab, fx, gambas, gdb, gdscript, go, graphviz, haml, hare, haskell, haxe, hcl, html, httpd, hugo, icon, idl, idlang, inc_luatex, informix, ini, innosetup, interlis, io, jam, jasmin, java, javascript, js_regex, json, jsp, jsx, julia, kotlin, ldif, less, lhs, lilypond, limbo, lindenscript, lisp, logtalk, lotos, lotus, lua, luban, makefile, maple, markdown, matlab, maya, mercury, meson, miranda, mod2, mod3, modelica, moon, ms, msl, mssql, mxml, n3, nasal, nbc, nemerle, netrexx, nginx, nice, nim, nix, nsis, nxc, oberon, objc, ocaml, octave, oorexx, org, os, oz, paradox, pas, pdf, perl, php, pike, pl1, plperl, plpython, pltcl, po, polygen, pony, pov, powershell, pro, progress, ps, psl, pure, purebasic, purescript, pyrex, python, q, qmake, qml, qu, r, rebol, rego, rexx, rnc, rpg, rpl, rst, ruby, rust, s, sam, sas, scad, scala, scilab, scss, shellscript, slim, small, smalltalk, sml, snmp, snobol, solidity, spec, spn, sql, squirrel, styl, svg, swift, sybase, tcl, tcsh, terraform, tex, toml, tsql, tsx, ttcn3, txt, typescript, upc, vala, vb, verilog, vhd, vimscript, vue, wat, whiley, wren, xml, xpp, yaiff, yaml, yaml_ansible, yang, zig, znn
here length can be the length of array 'a' ie: len(a) if a is already initialized or it can be a numerical value if a is being initialized right now. example:
You need to specify a language like this: <source lang="html">...</source>
Supported languages for syntax highlighting:
a4c, abap, abc, abnf, actionscript, ada, agda, alan, algol, ampl, amtrix, applescript, arc, arm, as400cl, ascend, asciidoc, asp, aspect, assembler, ats, autohotkey, autoit, avenue, awk, ballerina, bat, bbcode, bcpl, bibtex, biferno, bison, blitzbasic, bms, bnf, boo, c, carbon, ceylon, charmm, chill, chpl, clean, clearbasic, clipper, clojure, clp, cmake, cobol, coffeescript, coldfusion, conf, cpp2, critic, crk, crystal, cs_block_regex, csharp, css, d, dart, delphi, diff, dockerfile, dts, dylan, ebnf, ebnf2, eiffel, elixir, elm, email, erb, erlang, euphoria, exapunks, excel, express, factor, fame, fasm, felix, fish, fortran77, fortran90, frink, fsharp, fstab, fx, gambas, gdb, gdscript, go, graphviz, haml, hare, haskell, haxe, hcl, html, httpd, hugo, icon, idl, idlang, inc_luatex, informix, ini, innosetup, interlis, io, jam, jasmin, java, javascript, js_regex, json, jsp, jsx, julia, kotlin, ldif, less, lhs, lilypond, limbo, lindenscript, lisp, logtalk, lotos, lotus, lua, luban, makefile, maple, markdown, matlab, maya, mercury, meson, miranda, mod2, mod3, modelica, moon, ms, msl, mssql, mxml, n3, nasal, nbc, nemerle, netrexx, nginx, nice, nim, nix, nsis, nxc, oberon, objc, ocaml, octave, oorexx, org, os, oz, paradox, pas, pdf, perl, php, pike, pl1, plperl, plpython, pltcl, po, polygen, pony, pov, powershell, pro, progress, ps, psl, pure, purebasic, purescript, pyrex, python, q, qmake, qml, qu, r, rebol, rego, rexx, rnc, rpg, rpl, rst, ruby, rust, s, sam, sas, scad, scala, scilab, scss, shellscript, slim, small, smalltalk, sml, snmp, snobol, solidity, spec, spn, sql, squirrel, styl, svg, swift, sybase, tcl, tcsh, terraform, tex, toml, tsql, tsx, ttcn3, txt, typescript, upc, vala, vb, verilog, vhd, vimscript, vue, wat, whiley, wren, xml, xpp, yaiff, yaml, yaml_ansible, yang, zig, znn
2. Assigning a value to a partial range of elements of an array
You need to specify a language like this: <source lang="html">...</source>
Supported languages for syntax highlighting:
a4c, abap, abc, abnf, actionscript, ada, agda, alan, algol, ampl, amtrix, applescript, arc, arm, as400cl, ascend, asciidoc, asp, aspect, assembler, ats, autohotkey, autoit, avenue, awk, ballerina, bat, bbcode, bcpl, bibtex, biferno, bison, blitzbasic, bms, bnf, boo, c, carbon, ceylon, charmm, chill, chpl, clean, clearbasic, clipper, clojure, clp, cmake, cobol, coffeescript, coldfusion, conf, cpp2, critic, crk, crystal, cs_block_regex, csharp, css, d, dart, delphi, diff, dockerfile, dts, dylan, ebnf, ebnf2, eiffel, elixir, elm, email, erb, erlang, euphoria, exapunks, excel, express, factor, fame, fasm, felix, fish, fortran77, fortran90, frink, fsharp, fstab, fx, gambas, gdb, gdscript, go, graphviz, haml, hare, haskell, haxe, hcl, html, httpd, hugo, icon, idl, idlang, inc_luatex, informix, ini, innosetup, interlis, io, jam, jasmin, java, javascript, js_regex, json, jsp, jsx, julia, kotlin, ldif, less, lhs, lilypond, limbo, lindenscript, lisp, logtalk, lotos, lotus, lua, luban, makefile, maple, markdown, matlab, maya, mercury, meson, miranda, mod2, mod3, modelica, moon, ms, msl, mssql, mxml, n3, nasal, nbc, nemerle, netrexx, nginx, nice, nim, nix, nsis, nxc, oberon, objc, ocaml, octave, oorexx, org, os, oz, paradox, pas, pdf, perl, php, pike, pl1, plperl, plpython, pltcl, po, polygen, pony, pov, powershell, pro, progress, ps, psl, pure, purebasic, purescript, pyrex, python, q, qmake, qml, qu, r, rebol, rego, rexx, rnc, rpg, rpl, rst, ruby, rust, s, sam, sas, scad, scala, scilab, scss, shellscript, slim, small, smalltalk, sml, snmp, snobol, solidity, spec, spn, sql, squirrel, styl, svg, swift, sybase, tcl, tcsh, terraform, tex, toml, tsql, tsx, ttcn3, txt, typescript, upc, vala, vb, verilog, vhd, vimscript, vue, wat, whiley, wren, xml, xpp, yaiff, yaml, yaml_ansible, yang, zig, znn
This will produce the desired effect. example:
You need to specify a language like this: <source lang="html">...</source>
Supported languages for syntax highlighting:
a4c, abap, abc, abnf, actionscript, ada, agda, alan, algol, ampl, amtrix, applescript, arc, arm, as400cl, ascend, asciidoc, asp, aspect, assembler, ats, autohotkey, autoit, avenue, awk, ballerina, bat, bbcode, bcpl, bibtex, biferno, bison, blitzbasic, bms, bnf, boo, c, carbon, ceylon, charmm, chill, chpl, clean, clearbasic, clipper, clojure, clp, cmake, cobol, coffeescript, coldfusion, conf, cpp2, critic, crk, crystal, cs_block_regex, csharp, css, d, dart, delphi, diff, dockerfile, dts, dylan, ebnf, ebnf2, eiffel, elixir, elm, email, erb, erlang, euphoria, exapunks, excel, express, factor, fame, fasm, felix, fish, fortran77, fortran90, frink, fsharp, fstab, fx, gambas, gdb, gdscript, go, graphviz, haml, hare, haskell, haxe, hcl, html, httpd, hugo, icon, idl, idlang, inc_luatex, informix, ini, innosetup, interlis, io, jam, jasmin, java, javascript, js_regex, json, jsp, jsx, julia, kotlin, ldif, less, lhs, lilypond, limbo, lindenscript, lisp, logtalk, lotos, lotus, lua, luban, makefile, maple, markdown, matlab, maya, mercury, meson, miranda, mod2, mod3, modelica, moon, ms, msl, mssql, mxml, n3, nasal, nbc, nemerle, netrexx, nginx, nice, nim, nix, nsis, nxc, oberon, objc, ocaml, octave, oorexx, org, os, oz, paradox, pas, pdf, perl, php, pike, pl1, plperl, plpython, pltcl, po, polygen, pony, pov, powershell, pro, progress, ps, psl, pure, purebasic, purescript, pyrex, python, q, qmake, qml, qu, r, rebol, rego, rexx, rnc, rpg, rpl, rst, ruby, rust, s, sam, sas, scad, scala, scilab, scss, shellscript, slim, small, smalltalk, sml, snmp, snobol, solidity, spec, spn, sql, squirrel, styl, svg, swift, sybase, tcl, tcsh, terraform, tex, toml, tsql, tsx, ttcn3, txt, typescript, upc, vala, vb, verilog, vhd, vimscript, vue, wat, whiley, wren, xml, xpp, yaiff, yaml, yaml_ansible, yang, zig, znn
output : [5, 5, 5, 5, 4, 4, 4, 4, 4, 4]
A simple model for FRUSTUM OF A CONE
I am new to the ASCEND language and intend to contribute something to the community through GSOC2011. I have prior experience with GUI development and would be applying for projects involving GUI development. I wrote a sample model for Frustum Of A Cone
REQUIRE "system.a4l"; MODEL frustrum_of_cone; (* variables *) R, h, r, l, metal_density, curved_area, total_area, vol, metal_mass IS_A solver_var; (* specifications *) R = 30.0; r = 10.0; h = 50.0; metal_density = 9.60; (* equations *) l = sqrt(h^2 + (R-r)^2); vol = 3.1416*h*(R^2 + r^2 + r*R)/3; curved_area = 3.1416*l*(R+r); total_area = 3.1416*(R^2 + r^2) + curved_area; metal_mass = metal_density*vol; METHODS METHOD specify; FIX R; FIX r; FIX h; FIX metal_density; END specify; METHOD values; R := 30.0 ; r := 10.0; h := 50.0; metal_density := 9.60 ; END values; METHOD setup; RUN specify; RUN values; END setup; END frustrum_of_cone;
This MODEL is quite straight forward to write. ASCEND uses strong typing; it requires one to declare explicitly the type of each variable using IS_A statements.
Partitioned Model for FRUSTUM OF A CONE
Following is a modified version of the Frustum MODEL which breaks down a frustum into two cones : A top cone cut out from a bottom cone.
REQUIRE "atoms.a4l"; MODEL cone; (* variables *) R, h, l IS_A distance; curved_area IS_A area; vol IS_A volume; (* equations *) l = sqrt(h^2 + R^2); vol = 3.1416*h*R^2/3; curved_area = 3.1416*l*R; METHODS METHOD specify; FIX R; FIX h; END specify; END cone; MODEL partitioned_frustrum_of_cone; (* variables *) R, r, h IS_A distance; l IS_A distance; curved_area, total_area IS_A area; vol IS_A volume; metal_density IS_A mass_density; metal_mass IS_A mass; (* parts *) top IS_A cone; bottom IS_A cone; (* specifications *) R = 30.0 {cm}; r = 10.0 {cm}; h = 50.0 {cm}; metal_density = 9.60 {g/cm^3}; (* equations *) top.R = r; top.h = r*h/(R-r); bottom.R = R; bottom.h = h + top.h; l = bottom.l - top.l; vol = bottom.vol - top.vol; curved_area = bottom.curved_area - top.curved_area; total_area = 3.1416*(R^2 + r^2) + curved_area; metal_mass = metal_density*vol; METHODS METHOD specify; FIX R; FIX r; FIX h; FIX metal_density; END specify; METHOD values; R := 30.0 {cm}; r := 10.0 {cm}; h := 50.0 {cm}; metal_density := 9.60 {g/cm^3}; END values; METHOD setup; RUN specify; RUN values; END setup; END partitioned_frustrum_of_cone;