**Sumerian Beveled Bowl Volume and eTCL Slot Calculator Demo Example ** This page is under development. Comments are welcome, but please load any comments in the comments section at the bottom of the page. Please include your wiki MONIKER in your comment with the same courtesy that I will give you. Its very hard to reply intelligibly without some background of the correspondent. Thanks,[gold] ---- <> [gold] Here is some eTCL starter code for calculating volume of ancient Sumerian clay bowls. The impetus for these calculations was checking bowl volumes in some excavation reports and modern replicas. In modern terms, the bowl volume can calculated from the volume of a truncated cone. Most of the testcases involve replicas or models, using assumptions and rules of thumb. In the Sumerian coefficient lists on clay tablets, there are coefficients which were used in determining the amount of materials and the daily work rates of the workers. In most cases, the math problem is how the coefficient was used in estimating materials and work rates. One difficulty is determining the effective power of the coefficient in base 60. For example, 20 could represent either 20*3600,20,20/60, 20/3600, or even 1/20. The basic dimensions of geometric figures, merchant payments, and final tallies were presented in the Sumerian accounts on clay tablets, but sometimes the calculations were left off the tablet, broken off, or garbled. At least one approach for the modern reader and using modern terminology is to develop the implied algebraic equations from the Sumerian numbers. Then the eTCL calculator can be run over a number of testcases to validate the algebraic equations. ---- ***Testcases Section*** In planning any software, it is advisable to gather a number of testcases to check the results of the program. The math for the testcases can be checked by pasting statements in the TCL console. Aside from the TCL calculator display, when one presses the report button on the calculator, one will have console show access to the capacity functions (subroutines). **** Testcase 1 **** %| Testcase 1 | | |% %| quantity etc |units | value |% &|testcase number| 1 |& &|bowl rim diameter| mm| 155. |& &|bowl base diameter| mm| 80. |& &|bowl height| mm| 73. |& &|bowl thickness| meters| 1000. |& &|side surface| mm*mm | 30294.5565 |& &|total surface| mm*mm | 54190.2956 |& &|volume| milliliters| 818.4437 |& &|bowl volume over standard volume| | 0.8184 |& **** Testcase 2 **** &|testcase number| 2 | |& &|bowl rim diameter| mm| 100. |& &|bowl base diameter| mm| 100. |& &|bowl height |mm| 100. |& &|bowl thickness |meters| 1000. |& &|side surface| mm*mm | 31415.9265 |& &|total surface| mm*mm | 47123.889 |& &|volume| milliliters| 785.3981 |& &|bowl volume over standard volume | 0.7853 |& **** Testcase 3 **** %| Testcase 3 | | |% %| quantity etc |units | value |% &|testcase number| 3 || |& &|bowl rim diameter |mm| 145. |& &|bowl base diameter |mm| 60. |& &|bowl height| mm| 50. |& &|bowl thickness| meters| 1000. |& &|side surface| mm*mm | 21131.1609 |& &|total surface |mm*mm | 40471.5907 |& &|volume| milliliters| 436.223 |& &|bowl volume over standard volume | 0.4362 | |& ---- ***Screenshots Section*** ****figure 1.**** [Sumerian Beveled Bowl Volume and eTCL Slot Calculator Demo Example diagram.png] ---- ***References:*** * Cities of the Ancient World: [https://faculty.washington.edu/modelski/WCITI2.html] * Goulder, Jill. "Administrators' bread: Uruk bevel-rim bowl". Antiquity 84 (324): 351 -362[http://antiquity.ac.uk/Ant/084/0351/ant0840351.pdf] * Millard, A.R. (1988). The Bevelled-Rim Bowls:British Institute for the Study of Iraq. * Bevel Rim bowl article, [http://chnm.gmu.edu/worldhistorysources/d/250/whm.html] * Beveled rim bowls, Wikipedia * Problem Bevel Rim Bowls: Histograms & Related Displays * Polulation, Exchange, and Early State Formation, Henry Wright and Gregory Johnson, 1975 * [www.columbia.edu/itc/anthropology/v3922/pdfs/wright_johnson.pdf] ---- **Appendix Code** ***appendix TCL programs and scripts *** ====== # pretty print from autoindent and ased editor # Sumerian beveled bowl volume calculator # written on Windows XP on eTCL # working under TCL version 8.5.6 and eTCL 1.0.1 # gold on TCL WIKI , 30mar2014 package require Tk namespace path {::tcl::mathop ::tcl::mathfunc} frame .frame -relief flat -bg aquamarine4 pack .frame -side top -fill y -anchor center set names {{} {bowl rim diameter mm:} } lappend names {bowl base diameter mm:} lappend names {bowl height mm : } lappend names {standard volume milliliters: } lappend names {answer: bowl side area mm*mm: } lappend names {volume bowl milliliters:} lappend names { bowl vol over sila std. vol : } foreach i {1 2 3 4 5 6 7} { label .frame.label$i -text [lindex $names $i] -anchor e entry .frame.entry$i -width 35 -textvariable side$i grid .frame.label$i .frame.entry$i -sticky ew -pady 2 -padx 1 } proc pi {} { expr acos(-1) } proc bowlvolume {rim base height } { set r1 [* $rim .5] set r2 [* $base .5] set term1 [+ [* $r1 $r1 ] [* $r2 $r2 ] [* $r1 $r2 ]] set bowlvolume [* [pi] $height $term1 [/ 1. 3. ]] } proc bowlsidearea {rim base height } { set r1 [* $rim .5] set r2 [* $base .5] set term2 [* [- $r1 $r2] [- $r1 $r2]] set term3 [* $height $height] set term4 [sqrt [+ $term2 $term3]] set surfaceside [* [pi] [+ $r1 $r2] $term4] } proc bowltotalsa {rim base height } { set r1 [* $rim .5] set r2 [* $base .5] set term2 [* [pi] $r1 $r1 ] set term3 [* [pi] $r2 $r2 ] set sidearea [ bowlsidearea $rim $base $height] set bowltotalsa [+ $term2 $term3 $sidearea ] } proc about {} { set msg "Calculator for Sumerian Beveled Bowl from TCL WIKI, written on eTCL " tk_messageBox -title "About" -message $msg } proc calculate { } { global answer2 global side1 side2 side3 side4 side5 global side6 side7 testcase_number global surfaceside bowltotalsa incr testcase_number set bowlrim $side1 set bowlbase $side2 set bowlheight $side3 set sila_std_vol2 $side4 set totalvolx [ bowlvolume $bowlrim $bowlbase $bowlheight] set bowltotalsa [ bowltotalsa $bowlrim $bowlbase $bowlheight] set surfaceside [ bowlsidearea $bowlrim $bowlbase $bowlheight] set side5 $surfaceside set side6 [* $totalvolx .001] set side7 [/ $totalvolx 1000. $sila_std_vol2 ] } proc fillup {aa bb cc dd ee ff gg} { .frame.entry1 insert 0 "$aa" .frame.entry2 insert 0 "$bb" .frame.entry3 insert 0 "$cc" .frame.entry4 insert 0 "$dd" .frame.entry5 insert 0 "$ee" .frame.entry6 insert 0 "$ff" .frame.entry7 insert 0 "$gg"} proc clearx {} { foreach i {1 2 3 4 5 6 7} { .frame.entry$i delete 0 end } } proc reportx {} { global side1 side2 side3 side4 side5 global side6 side7 testcase_number global surfaceside bowltotalsa console show; puts "testcase number: $testcase_number " puts "bowl rim diameter mm: $side1 " puts "bowl base diameter mm: $side2 " puts "bowl height mm: $side3 " puts "bowl thickness meters: $side4 " puts "side surface mm*mm : $side5 " puts "total surface mm*mm : $bowltotalsa " puts "volume milliliters: $side6 " puts "bowl volume over standard volume : $side7 " } frame .buttons -bg aquamarine4 ::ttk::button .calculator -text "Solve" -command { calculate } ::ttk::button .test2 -text "Testcase1" -command {clearx;fillup 155. 80. 73. 1000. 30294.5 818.4 .8184 } ::ttk::button .test3 -text "Testcase2" -command {clearx;fillup 100. 100. 100. 1000. 31415.9 785.39 .785 } ::ttk::button .test4 -text "Testcase3" -command {clearx;fillup 145. 60. 50. 1000. 21131.16 436. .436 } ::ttk::button .clearallx -text clear -command {clearx } ::ttk::button .about -text about -command about ::ttk::button .cons -text report -command { reportx } ::ttk::button .exit -text exit -command {exit} pack .calculator -in .buttons -side top -padx 10 -pady 5 pack .clearallx .cons .about .exit .test4 .test3 .test2 -side bottom -in .buttons grid .frame .buttons -sticky ns -pady {0 10} . configure -background aquamarine4 -highlightcolor brown -relief raised -border 30 wm title . "Sumerian Beveled Bowl Calculator " ====== *** Pushbutton Operation*** For the push buttons, the recommended procedure is push testcase and fill frame, change first three entries etc, push solve, and then push report. Report allows copy and paste from console. For testcases in a computer session, the eTCL calculator increments a new testcase number internally, eg. TC(1), TC(2) , TC(3) , TC(N). The testcase number is internal to the calculator and will not be printed until the report button is pushed for the current result numbers (which numbers will be cleared on the next solve button.) The command { calculate; reportx } or { calculate ; reportx; clearx } can be added or changed to report automatically. Another wrinkle would be to print out the current text, delimiters, and numbers in a TCL wiki style table as ====== puts " %| testcase $testcase_number | value| units |comment |%" puts " &| volume| $volume| cubic meters |based on length $side1 and width $side2 |&" ====== ---- [gold] This page is copyrighted under the TCL/TK license terms, [http://tcl.tk/software/tcltk/license.html%|%this license]. **Comments Section** <> Please place any comments here, Thanks. <> Numerical Analysis | Toys | Calculator | Mathematics| Example