diff options
Diffstat (limited to 'src/interp/nag-d03.boot.pamphlet')
-rw-r--r-- | src/interp/nag-d03.boot.pamphlet | 661 |
1 files changed, 661 insertions, 0 deletions
diff --git a/src/interp/nag-d03.boot.pamphlet b/src/interp/nag-d03.boot.pamphlet new file mode 100644 index 00000000..19717651 --- /dev/null +++ b/src/interp/nag-d03.boot.pamphlet @@ -0,0 +1,661 @@ +\documentclass{article} +\usepackage{axiom} +\begin{document} +\title{\$SPAD/src/interp nag-d03.boot} +\author{The Axiom Team} +\maketitle +\begin{abstract} +\end{abstract} +\eject +\tableofcontents +\eject +\section{License} +<<license>>= +-- Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd. +-- All rights reserved. +-- +-- Redistribution and use in source and binary forms, with or without +-- modification, are permitted provided that the following conditions are +-- met: +-- +-- - Redistributions of source code must retain the above copyright +-- notice, this list of conditions and the following disclaimer. +-- +-- - Redistributions in binary form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in +-- the documentation and/or other materials provided with the +-- distribution. +-- +-- - Neither the name of The Numerical ALgorithms Group Ltd. nor the +-- names of its contributors may be used to endorse or promote products +-- derived from this software without specific prior written permission. +-- +-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +-- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +-- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +-- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +-- OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +-- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +-- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +@ +<<*>>= +<<license>> + +d03edf() == + htInitPage('"D03EDF - Elliptic PDE, solution of finite difference equations by a multigrid technique ",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float))) + (text . "\windowlink{Manual Page}{manpageXXd03edf} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|d03edf| '|NagPartialDifferentialEquationsPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "\newline ") + (text . "D03EDF solves, by multigrid iteration, the seven point scheme ") + (text . "\newline \htbitmap{d03edf} \newline which arises from the ") + (text . "discretization of an elliptic partial differential equation of ") + (text . "the form \center{\htbitmap{d03edf1}} and its boundary conditions") + (text . ", defined on a rectangular region. This we can write in matrix ") + (text . "form as \newline \center{{\it Au =f}}") + (text . "\blankline") + (text . "\newline ") + (text . "Read the input file to see the example program. ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\spadcommand{)read d03edf \bound{s0}} ") + (text . "\blankline") + (text . "\newline ") + (text . "If you would like to enter a problem, ") + (text . "how would you like to input the matrices? ") + (radioButtons matrix + ("" " By entering individual entries" long) + ("" " By entering matrix names already defined on the command line" short))) + htMakeDoneButton('"Continue", 'd03edfControl) + htShowPage() + +d03edfControl(htPage) == + type := htpButtonValue(htPage,'matrix) + if (type = 'long) then + d03edfLong() + else + d03edfShort() + +d03edfLong() == + htInitPage('"D03EDF - Elliptic PDE, solution of finite difference equations by a multigrid technique ",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float))) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Number of interior grid points in the {\it x}-direction ") + (text . "{\it ngx}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 3 ngx PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Number of interior grid points in the {\it y}-direction ") + (text . "{\it ngy}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 3 ngy PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "First dimension of A, {\it lda}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 22 lda PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Maximum permitted number of multigrid iterations, {\it maxit}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 1 maxit PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Tolerance required, {\it acc}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 "1.0e-4" acc F)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\newline Output of printed information for routine {\it iout}:") + (radioButtons iout + ("" " 0 - no output" zero) + ("" " 1 - the solution \htbitmap{uij} {\it i} = 1,2,...,NGX; {\it j} = 1,2,...,NGY" one) + ("" " 2 - residual 2-norm after each iteration " two) + ("" " 3 - as for iout = 1 & iout = 2" three) + ("" " 4 - as for iout = 3, plus the final residual" four) + ("" " 5 - as for iout = 4, plus initial elements of A & RHS" five) + ("" " 6 - as for iout = 5, plus Galerkin coarse grid approximations" six) + ("" " 7 - as for iout = 6, plus the incomplete Crout decompositions" seven) + ("" " 8 - as for iout = 7, plus the residual after each iteration" eight)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\newline Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" ifail_minusOne) + ("" " 1, Suppress error messages" ifail_one))) + htMakeDoneButton('"Continue", 'd03edfSolve) + htShowPage() + + +d03edfSolve htPage == + ngx := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ngx) + objValUnwrap htpLabelSpadValue(htPage, 'ngx) + ngy := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ngy) + objValUnwrap htpLabelSpadValue(htPage, 'ngy) + lda := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lda) + objValUnwrap htpLabelSpadValue(htPage, 'lda) + maxit := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'maxit) + objValUnwrap htpLabelSpadValue(htPage, 'maxit) + acc := htpLabelInputString(htPage,'acc) + control := htpButtonValue(htPage,'iout) + iout := + control = 'zero => '0 + control = 'one => '1 + control = 'two => '2 + control = 'three => '3 + control = 'four => '4 + control = 'five => '5 + control = 'six => '6 + control = 'seven => '7 + '8 + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'ifail_one => '1 + '-1 + aList := + "append"/[fa(i) for i in 1..lda] where fa(i) == + labelList := + "append"/[fb(i,j) for j in 1..7] where fb(i,j) == + anam := INTERN STRCONC ('"a",STRINGIMAGE i,STRINGIMAGE j) + [['bcStrings,[5, 0, anam, 'F]]] + prefix := ('"\newline ") + labelList := [['text,:prefix],:labelList] + middle := ('"\blankline \menuitemstyle{} \tab{2} Enter the matrix ") + middle := STRCONC(middle,'"{\it rhs(lda)}: \newline ") + rList := + "append"/[fc(i) for i in 1..lda] where fc(i) == + rnam := INTERN STRCONC ('"r",STRINGIMAGE i) + [['bcStrings,[6, "0.0", rnam, 'F]]] + rList := [['text,:middle],:rList] + mid:= ('"\blankline \menuitemstyle{} \tab{2} Enter the matrix ") + mid := STRCONC(mid,'" {\it ub(ngx*ngy)}: \newline ") + uList := + "append"/[fd(i) for i in 1..(ngx*ngy)] where fd(i) == + unam := INTERN STRCONC ('"u",STRINGIMAGE i) + [['bcStrings,[6, 0, unam, 'F]]] + uList := [['text,:mid],:uList] + equationPart := [ + '(domainConditions + (isDomain EM $EmptyMode) + (isDomain S (String)) + (isDomain F (Float)) + (isDomain I (Integer))), + :aList,:rList,:uList] + page := htInitPage('"D03EDF - Elliptic PDE, solution of finite difference equations by a multigrid technique ",nil) + htSay '"\menuitemstyle{}\tab{2} " + htSay '"Enter the matrix {\it a(lda,7)}: " + htSay '"\newline " + htMakePage equationPart + htMakeDoneButton('"Continue",'d03edfLongGen) + htpSetProperty(page,'ngx,ngx) + htpSetProperty(page,'ngy,ngy) + htpSetProperty(page,'lda,lda) + htpSetProperty(page,'maxit,maxit) + htpSetProperty(page,'acc,acc) + htpSetProperty(page,'iout,iout) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +d03edfLongGen htPage == + ngx := htpProperty(htPage, 'ngx) + ngy := htpProperty(htPage, 'ngy) + lda := htpProperty(htPage, 'lda) + maxit := htpProperty(htPage, 'maxit) + acc := htpProperty(htPage, 'acc) + iout := htpProperty(htPage, 'iout) + ifail := htpProperty(htPage, 'ifail) + alist := htpInputAreaAlist htPage + y := alist + for i in 1..(ngx*ngy) repeat + utemp := STRCONC((first y).1," ") + uList := [utemp,:uList] + y := rest y + ustring := bcwords2liststring uList + for i in 1..lda repeat + rtemp := STRCONC((first y).1," ") + rList := [rtemp,:rList] + y := rest y + rstring := bcwords2liststring rList + for i in 1..lda repeat + for j in 1..7 repeat + v := STRCONC((first y).1," ") + rowList := [v,:rowList] + y := rest y + vList := [:vList,rowList] + rowList := [] + vList := reverse vList + astring := bcwords2liststring [bcwords2liststring x for x in vList] + prefix := STRCONC("d03edf(", STRINGIMAGE ngx,", ",STRINGIMAGE ngy,", ") + prefix := STRCONC(prefix,STRINGIMAGE lda,", ",STRINGIMAGE maxit,", ",acc) + mid := STRCONC(", ",STRINGIMAGE iout,", ",astring,"::Matrix DoubleFloat,[") + mid := STRCONC(mid,rstring,"],[",ustring,"],",STRINGIMAGE ifail,")") + linkGen STRCONC(prefix,mid) + +d03edfShort() == + htInitPage('"D03EDF - Elliptic PDE, solution of finite difference equations by a multigrid technique ",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float))) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Number of interior grid points in the {\it x}-direction ") + (text . "\htbitmap{nx}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 0 ngx PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Number of interior grid points in the {\it y}-direction ") + (text . "\htbitmap{ny}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 0 ngy PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "First dimension of A, {\it lda}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 0 lda PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Name of the array {\it a(lda,7)} defined on the command line: ") + (text . "\newline\tab{2} ") + (bcStrings (10 "a" a EM)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Name of the array {\it rhs(lda)} defined on the command line: ") + (text . "\newline\tab{2} ") + (bcStrings (10 "rhs" rhs EM)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Name of the array {\it ub(ngx*ngy)} defined on the command line:") + (text . "\newline\tab{2} ") + (bcStrings (10 "ub" ub EM)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Maximum permitted number of multigrid iterations, {\it maxit}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 0 maxit PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Tolerance required, {\it acc}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 "1.0e-4" acc F)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\newline Output of printed information for routine {\it iout}:") + (radioButtons iout + ("" " 0 - no output" zero) + ("" " 1 - the solution \htbitmap{uij} {\it i} = 1,2,...,NGX; {\it j} = 1,2,...,NGY" one) + ("" " 2 - residual 2-norm after each iteration " two) + ("" " 3 - as for iout = 1 & iout = 2" three) + ("" " 4 - as for iout = 3, plus the final residual" four) + ("" " 5 - as for iout = 4, plus initial elements of A & RHS" five) + ("" " 6 - as for iout = 5, plus Galerkin coarse grid approximations" six) + ("" " 7 - as for iout = 6, plus the incomplete Crout decompositions" seven) + ("" " 8 - as for iout = 7, plus the residual after each iteration" eight)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\newline Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" ifail_minusOne) + ("" " 1, Suppress error messages" ifail_one))) + htMakeDoneButton('"Continue", 'd03edfShortGen) + htShowPage() + + +d03edfShortGen htPage == + ngx := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ngx) + objValUnwrap htpLabelSpadValue(htPage, 'ngx) + ngy := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ngy) + objValUnwrap htpLabelSpadValue(htPage, 'ngy) + lda := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lda) + objValUnwrap htpLabelSpadValue(htPage, 'lda) + maxit := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'maxit) + objValUnwrap htpLabelSpadValue(htPage, 'maxit) + a := htpLabelInputString(htPage, 'a) + rhs := htpLabelInputString(htPage, 'rhs) + ub := htpLabelInputString(htPage, 'ub) + acc := htpLabelInputString(htPage,'acc) + control := htpButtonValue(htPage,'iout) + iout := + control = 'zero => '0 + control = 'one => '1 + control = 'two => '2 + control = 'three => '3 + control = 'four => '4 + control = 'five => '5 + control = 'six => '6 + control = 'seven => '7 + '8 + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'ifail_one => '1 + '-1 + prefix := STRCONC("d03edf(", STRINGIMAGE ngx,", ",STRINGIMAGE ngy,", ") + prefix := STRCONC(prefix,STRINGIMAGE lda,", ",STRINGIMAGE maxit,", ",acc) + mid := STRCONC(", ",STRINGIMAGE iout,", ",a,", ") + mid := STRCONC(mid,rhs,", ",ub,", ",STRINGIMAGE ifail,")") + linkGen STRCONC(prefix,mid) + + + +d03eef() == + htInitPage('"D03EEF - Discretize a 2nd order elliptic PDE on a rectangle",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float))) + (text . "\windowlink{Manual Page}{manpageXXd03eef} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|d03eef| '|NagPartialDifferentialEquationsPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "\newline ") + (text . "D03EEF discretizes a second order linear elliptic partial ") + (text . "differential equation of the form \center{\htbitmap{d03eef}} ") + (text . "on a rectangular region \newline \tab{2} ") + (text . "{\it x}a \htbitmap{less=} {\it x} \htbitmap{less=} {\it x}b ") + (text . "\newline \tab{2} {\it y}a \htbitmap{less=} {\it y} ") + (text . "\htbitmap{less=} {\it y}b \newline subject to the boundary ") + (text . "conditions of the form \newline \htbitmap{d03eef1} \newline ") + (text . "where {\it \delta U/ \delta n} denotes the outward pointing ") + (text . "normal derivative on the boundary. The equation is said to be ") + (text . "elliptic if \center{\htbitmap{d03eef2}} \newline for all points ") + (text . "in the rectangular region. The seven-diagonal linear equations ") + (text . "produced are in a form suitable for passing directly to the ") + (text . "multigrid routine D03EDF. \blankline ") + (text . "The equation is discretized on a rectangular grid, with ") + (text . "\htbitmap{nx} grid points in the {\it x}-direction and ") + (text . "\htbitmap{ny} grid points in the {\it y}-direction. ")) + htMakeDoneButton('"Continue", 'd03eefInput) + htShowPage() + +d03eefInput() == + htInitPage('"D03EEF - Discretize a 2nd order elliptic PDE on a rectangle",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float))) + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Enter the value {\it x}a, {\it xmin}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 "0.0" xmin F)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Enter the value {\it x}b, {\it xmax}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 "1.0" xmax F)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Enter the value {\it y}a, {\it ymin}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 "0.0" ymin F)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Enter the value {\it y}b, {\it ymax}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 "1.0" ymax F)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Number of interior grid points in the {\it x}-direction ") + (text . "{\it ngx}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 9 ngx PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Number of interior grid points in the {\it y}-direction ") + (text . "{\it ngy}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 9 ngy PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "First dimension of A, {\it lda}: ") + (text . "\newline\tab{2} ") + (bcStrings (10 133 lda PI)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\newline Which {\it scheme} would you like to use: ") + (radioButtons scheme + (" C" " central differences" cent) + (" U" " upwind differences" up)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\newline Ifail value:") + (radioButtons ifail + ("" " -1, Print error messages" minusOne) + ("" " 1, Suppress error messages" one))) + htMakeDoneButton('"Continue", 'd03eefSolve) + htShowPage() + + + +d03eefSolve htPage == + xmin := htpLabelInputString(htPage,'xmin) + xmax := htpLabelInputString(htPage,'xmax) + ymin := htpLabelInputString(htPage,'ymin) + ymax := htpLabelInputString(htPage,'ymax) + ngx := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ngx) + objValUnwrap htpLabelSpadValue(htPage, 'ngx) + ngy := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'ngy) + objValUnwrap htpLabelSpadValue(htPage, 'ngy) + lda := + $bcParseOnly => PARSE_-INTEGER htpLabelInputString(htPage, 'lda) + objValUnwrap htpLabelSpadValue(htPage, 'lda) + diff := htpButtonValue(htPage,'scheme) + scheme := + diff = 'cent => '"C" + '"U" + error := htpButtonValue(htPage,'ifail) + ifail := + error = 'one => '1 + '-1 + d03eefDefaultSolve(htPage,xmin,xmax,ymin,ymax,ngx,ngy,lda,scheme,ifail) + +d03eefDefaultSolve(htPage,xmin,xmax,ymin,ymax,ngx,ngy,lda,scheme,ifail) == + page := htInitPage('"D03EEF - Discretize a 2nd order elliptic PDE on a rectangle",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float))) + (text . "Please enter the values of \alpha to \psi to construct PDEF.") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\alpha (x,y): \tab{10} ") + (bcStrings (46 1 alpha F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\beta (x,y): \tab{10} ") + (bcStrings (46 0 beta F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\gamma (x,y): \tab{10} ") + (bcStrings (46 1 gamma F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\delta (x,y): \tab{10} ") + (bcStrings (46 50 delta F)) + (text . "\blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\epsilon (x,y): \tab{10} ") + (bcStrings (46 50 eps F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\phi (x,y): \tab{10} ") + (bcStrings (46 0 phi F)) + (text . "\blankline ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\psi (x,y): \tab{10} ") + (bcStrings (55 "-2*sin(X)*sin(Y) + 50*cos(X)*sin(Y) +50*sin(X)*cos(Y)" psi EM)) + (text . "\blankline ") + (text . "Please enter the boundary conditions a(x,y), b(x,y), and c(x,y) ") + (text . "for the top, bottom, left and right hand sides, to construct ") + (text . "BNDY. \blankline") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Bottom boundary conditions: ") + (text . "\newline a(x,y): \tab{10} ") + (bcStrings (46 0 a11 F)) + (text . "\newline b(x,y): \tab{10} ") + (bcStrings (46 1 a12 F)) + (text . "\newline c(x,y): \tab{10} ") + (bcStrings (46 "-sin(X)" a13 EM)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Right boundary conditions: ") + (text . "\newline a(x,y): \tab{10} ") + (bcStrings (46 1 a21 F)) + (text . "\newline b(x,y): \tab{10} ") + (bcStrings (46 0 a22 F)) + (text . "\newline c(x,y): \tab{10} ") + (bcStrings (46 "sin(X)*sin(Y)" a23 EM)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Top boundary conditions: ") + (text . "\newline a(x,y): \tab{10} ") + (bcStrings (46 1 a31 F)) + (text . "\newline b(x,y): \tab{10} ") + (bcStrings (46 0 a32 F)) + (text . "\newline c(x,y): \tab{10} ") + (bcStrings (46 "sin(X)*sin(Y)" a33 EM)) + (text . "\blankline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "Left boundary conditions: ") + (text . "\newline a(x,y): \tab{10} ") + (bcStrings (46 0 a41 F)) + (text . "\newline b(x,y): \tab{10} ") + (bcStrings (46 1 a42 F)) + (text . "\newline c(x,y): \tab{10} ") + (bcStrings (46 "-sin(Y)" a43 EM))) + htMakeDoneButton('"Continue",'d03eefGen) + htpSetProperty(page,'xmin,xmin) + htpSetProperty(page,'xmax,xmax) + htpSetProperty(page,'ymin,ymin) + htpSetProperty(page,'ymax,ymax) + htpSetProperty(page,'ngx,ngx) + htpSetProperty(page,'ngy,ngy) + htpSetProperty(page,'lda,lda) + htpSetProperty(page,'scheme,scheme) + htpSetProperty(page,'ifail,ifail) + htpSetProperty(page,'inputArea, htpInputAreaAlist htPage) + htShowPage() + +d03eefGen htPage == + xmin := htpProperty(htPage, 'xmin) + xmax := htpProperty(htPage, 'xmax) + ymin := htpProperty(htPage, 'ymin) + ymax := htpProperty(htPage, 'ymax) + ngx := htpProperty(htPage, 'ngx) + ngy := htpProperty(htPage, 'ngy) + lda := htpProperty(htPage, 'lda) + scheme := htpProperty(htPage, 'scheme) + ifail := htpProperty(htPage, 'ifail) + alist := htpInputAreaAlist htPage + y := alist + for i in 1..4 repeat + for j in 1..3 repeat + v := STRCONC((first y).1," ") + rowList := [v,:rowList] + y := rest y + vList := [:vList,rowList] + rowList := [] + vList := reverse vList + astring := bcwords2liststring [bcwords2liststring x for x in vList] + for i in 1..7 repeat + utemp := STRCONC((first y).1," ") + uList := [utemp,:uList] + y := rest y + ustring := bcwords2liststring uList + prefix := STRCONC("d03eef(",xmin,", ",xmax,", ",ymin,", ",ymax,", ") + prefix := STRCONC(prefix,STRINGIMAGE ngx,", ",STRINGIMAGE ngy,", ") + prefix := STRCONC(prefix,STRINGIMAGE lda,",_"",scheme,"_", ") + prefix := STRCONC(prefix,STRINGIMAGE ifail,", (",ustring) + prefix := STRCONC(prefix,"::Vector Expression Float)::ASP73('PDEF),(") + prefix := STRCONC(prefix,astring,"::Matrix Expression Float)::ASP74('BNDY))") + linkGen prefix + +d03faf() == + htInitPage('"D03FAF - Elliptic PDE, Helmholtz equation, 3-D Cartesian co-ordinates",nil) + htMakePage '( + (domainConditions + (isDomain EM $EmptyMode) + (isDomain F (Float))) + (text . "\windowlink{Manual Page}{manpageXXd03faf} for this routine ") + (text . "\newline ") + (text . "\lispwindowlink{Browser operation page}{(|oPageFrom| '|d03faf| '|NagPartialDifferentialEquationsPackage|)} for this routine") + (text . "\newline \horizontalline ") + (text . "\newline ") + (text . "D03FAF solves the three-dimensional Helmholtz equation ") + (text . "in cartesian co-ordinates: \center{\htbitmap{d03faf}} \newline ") + (text . "This subroutine forms the system of linear equations resulting ") + (text . "fom the standard seven-point finite difference equations, ") + (text . "and then solves the system using a method based on the fast ") + (text . "Fourier transform (FFT) described by Swartztrauber. ") + (text . "\blankline") + (text . "\newline ") + (text . "Read the input file to see the example program. ") + (text . "\newline ") + (text . "\menuitemstyle{}\tab{2} ") + (text . "\spadcommand{)read d03faf \bound{s0}} ")) + htShowPage() +@ +\eject +\begin{thebibliography}{99} +\bibitem{1} nothing +\end{thebibliography} +\end{document} |