aboutsummaryrefslogtreecommitdiff
path: root/src/algebra/d03Package.spad.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-09-20 06:29:26 +0000
committerdos-reis <gdr@axiomatics.org>2011-09-20 06:29:26 +0000
commit255be06767355e3b41acd75990c6b90270b8f2bd (patch)
tree0a032d40d7cb2213e206d70beb23dc74ccf4a230 /src/algebra/d03Package.spad.pamphlet
parent12c856f9901ef3d6d82fb99855ecdf3e0b91484b (diff)
downloadopen-axiom-255be06767355e3b41acd75990c6b90270b8f2bd.tar.gz
* algebra/asp.spad.pamphlet: Remove.
* algebra/c02.spad.pamphlet: Likewise. * algebra/c05.spad.pamphlet: Likewise. * algebra/c06.spad.pamphlet: Likewise. * algebra/d01.spad.pamphlet: Likewise. * algebra/d02.spad.pamphlet: Likewise. * algebra/d03.spad.pamphlet: Likewise. * algebra/e01.spad.pamphlet: Likewise. * algebra/e02.spad.pamphlet: Likewise. * algebra/e04.spad.pamphlet: Likewise. * algebra/f01.spad.pamphlet: Likewise. * algebra/f02.spad.pamphlet: Likewise. * algebra/f04.spad.pamphlet: Likewise. * algebra/f07.spad.pamphlet: Likewise. * algebra/s.spad.pamphlet: Likewise. * algebra/d01Package.spad.pamphlet: Likewise. * algebra/d02Package.spad.pamphlet: Likewise. * algebra/d03Package.spad.pamphlet: Likewise. * algebra/e04Package.spad.pamphlet: Likewise. * algebra/d01agents.spad.pamphlet: Likewise. * algebra/d01routine.spad.pamphlet: Likewise. * algebra/d01transform.spad.pamphlet: Likewise. * algebra/d01weights.spad.pamphlet: Likewise. * algebra/d02agents.spad.pamphlet: Likewise. * algebra/d02routine.spad.pamphlet: Likewise. * algebra/d03agents.spad.pamphlet: Likewise. * algebra/d03routine.spad.pamphlet: Likewise. * algebra/e04agents.spad.pamphlet: Likewise. * algebra/e04routine.spad.pamphlet: Likewise.
Diffstat (limited to 'src/algebra/d03Package.spad.pamphlet')
-rw-r--r--src/algebra/d03Package.spad.pamphlet307
1 files changed, 0 insertions, 307 deletions
diff --git a/src/algebra/d03Package.spad.pamphlet b/src/algebra/d03Package.spad.pamphlet
deleted file mode 100644
index 3cb2a692..00000000
--- a/src/algebra/d03Package.spad.pamphlet
+++ /dev/null
@@ -1,307 +0,0 @@
-\documentclass{article}
-\usepackage{open-axiom}
-\begin{document}
-\title{\$SPAD/src/algebra d03Package.spad}
-\author{Brian Dupee}
-\maketitle
-\begin{abstract}
-\end{abstract}
-\eject
-\tableofcontents
-\eject
-\section{package PDEPACK AnnaPartialDifferentialEquationPackage}
-<<package PDEPACK AnnaPartialDifferentialEquationPackage>>=
-)abbrev package PDEPACK AnnaPartialDifferentialEquationPackage
-++ Author: Brian Dupee
-++ Date Created: June 1996
-++ Date Last Updated: December 1997
-++ Basic Operations:
-++ Description: AnnaPartialDifferentialEquationPackage is an uncompleted
-++ package for the interface to NAG PDE routines. It has been realised that
-++ a new approach to solving PDEs will need to be created.
-++
-LEDF ==> List Expression DoubleFloat
-EDF ==> Expression DoubleFloat
-LDF ==> List DoubleFloat
-MDF ==> Matrix DoubleFloat
-DF ==> DoubleFloat
-LEF ==> List Expression Float
-EF ==> Expression Float
-MEF ==> Matrix Expression Float
-LF ==> List Float
-F ==> Float
-LS ==> List Symbol
-ST ==> String
-LST ==> List String
-INT ==> Integer
-NNI ==> NonNegativeInteger
-RT ==> RoutinesTable
-PDEC ==> Record(start:DF, finish:DF, grid:NNI, boundaryType:INT,
- dStart:MDF, dFinish:MDF)
-PDEB ==> Record(pde:LEDF, constraints:List PDEC,
- f:List LEDF, st:ST, tol:DF)
-IFL ==> List(Record(ifail:INT,instruction:ST))
-Entry ==> Record(chapter:ST, type:ST, domainName: ST,
- defaultMin:F, measure:F, failList:IFL, explList:LST)
-Measure ==> Record(measure:F,name:ST, explanations:LST)
-
-AnnaPartialDifferentialEquationPackage(): with
- solve:(NumericalPDEProblem) -> Result
- ++ solve(PDEProblem) is a top level ANNA function to solve numerically a system
- ++ of partial differential equations.
- ++
- ++ The method used to perform the numerical
- ++ process will be one of the routines contained in the NAG numerical
- ++ Library. The function predicts the likely most effective routine
- ++ by checking various attributes of the system of PDE's and calculating
- ++ a measure of compatibility of each routine to these attributes.
- ++
- ++ It then calls the resulting `best' routine.
- ++
- ++ ** At the moment, only Second Order Elliptic Partial Differential
- ++ Equations are solved **
- solve:(NumericalPDEProblem,RT) -> Result
- ++ solve(PDEProblem,routines) is a top level ANNA function to solve numerically a system
- ++ of partial differential equations.
- ++
- ++ The method used to perform the numerical
- ++ process will be one of the routines contained in the NAG numerical
- ++ Library. The function predicts the likely most effective routine
- ++ by checking various attributes of the system of PDE's and calculating
- ++ a measure of compatibility of each routine to these attributes.
- ++
- ++ It then calls the resulting `best' routine.
- ++
- ++ ** At the moment, only Second Order Elliptic Partial Differential
- ++ Equations are solved **
- solve:(F,F,F,F,NNI,NNI,LEF,List LEF,ST,DF) -> Result
- ++ solve(xmin,ymin,xmax,ymax,ngx,ngy,pde,bounds,st,tol) is a top level
- ++ ANNA function to solve numerically a system of partial differential
- ++ equations. This is defined as a list of coefficients (\axiom{pde}),
- ++ a grid (\axiom{xmin}, \axiom{ymin}, \axiom{xmax}, \axiom{ymax},
- ++ \axiom{ngx}, \axiom{ngy}), the boundary values (\axiom{bounds}) and a
- ++ tolerance requirement (\axiom{tol}). There is also a parameter
- ++ (\axiom{st}) which should contain the value "elliptic" if the PDE is
- ++ known to be elliptic, or "unknown" if it is uncertain. This causes the
- ++ routine to check whether the PDE is elliptic.
- ++
- ++ The method used to perform the numerical
- ++ process will be one of the routines contained in the NAG numerical
- ++ Library. The function predicts the likely most effective routine
- ++ by checking various attributes of the system of PDE's and calculating
- ++ a measure of compatibility of each routine to these attributes.
- ++
- ++ It then calls the resulting `best' routine.
- ++
- ++ ** At the moment, only Second Order Elliptic Partial Differential
- ++ Equations are solved **
- solve:(F,F,F,F,NNI,NNI,LEF,List LEF,ST) -> Result
- ++ solve(xmin,ymin,xmax,ymax,ngx,ngy,pde,bounds,st) is a top level
- ++ ANNA function to solve numerically a system of partial differential
- ++ equations. This is defined as a list of coefficients (\axiom{pde}),
- ++ a grid (\axiom{xmin}, \axiom{ymin}, \axiom{xmax}, \axiom{ymax},
- ++ \axiom{ngx}, \axiom{ngy}) and the boundary values (\axiom{bounds}).
- ++ A default value for tolerance is used. There is also a parameter
- ++ (\axiom{st}) which should contain the value "elliptic" if the PDE is
- ++ known to be elliptic, or "unknown" if it is uncertain. This causes the
- ++ routine to check whether the PDE is elliptic.
- ++
- ++ The method used to perform the numerical
- ++ process will be one of the routines contained in the NAG numerical
- ++ Library. The function predicts the likely most effective routine
- ++ by checking various attributes of the system of PDE's and calculating
- ++ a measure of compatibility of each routine to these attributes.
- ++
- ++ It then calls the resulting `best' routine.
- ++
- ++ ** At the moment, only Second Order Elliptic Partial Differential
- ++ Equations are solved **
- measure:(NumericalPDEProblem) -> Measure
- ++ measure(prob) is a top level ANNA function for identifying the most
- ++ appropriate numerical routine from those in the routines table
- ++ provided for solving the numerical PDE
- ++ problem defined by \axiom{prob}.
- ++
- ++ It calls each \axiom{domain} of \axiom{category}
- ++ \axiomType{PartialDifferentialEquationsSolverCategory} in turn to
- ++ calculate all measures and returns the best i.e. the name of
- ++ the most appropriate domain and any other relevant information.
- ++ It predicts the likely most effective NAG numerical
- ++ Library routine to solve the input set of PDEs
- ++ by checking various attributes of the system of PDEs and calculating
- ++ a measure of compatibility of each routine to these attributes.
- measure:(NumericalPDEProblem,RT) -> Measure
- ++ measure(prob,R) is a top level ANNA function for identifying the most
- ++ appropriate numerical routine from those in the routines table
- ++ provided for solving the numerical PDE
- ++ problem defined by \axiom{prob}.
- ++
- ++ It calls each \axiom{domain} listed in \axiom{R} of \axiom{category}
- ++ \axiomType{PartialDifferentialEquationsSolverCategory} in turn to
- ++ calculate all measures and returns the best i.e. the name of
- ++ the most appropriate domain and any other relevant information.
- ++ It predicts the likely most effective NAG numerical
- ++ Library routine to solve the input set of PDEs
- ++ by checking various attributes of the system of PDEs and calculating
- ++ a measure of compatibility of each routine to these attributes.
-
-
- == add
-
- import PDEB, d03AgentsPackage, ExpertSystemToolsPackage, NumericalPDEProblem
-
- zeroMeasure:Measure -> Result
- measureSpecific:(ST,RT,PDEB) -> Record(measure:F,explanations:ST)
- solveSpecific:(PDEB,ST) -> Result
- changeName:(Result,ST) -> Result
- recoverAfterFail:(PDEB,RT,Measure,Integer,Result) -> Record(a:Result,b:Measure)
-
- zeroMeasure(m:Measure):Result ==
- a := coerce(0$F)$AnyFunctions1(F)
- text := coerce("No available routine appears appropriate")$AnyFunctions1(ST)
- r := construct([[result@Symbol,a],[method@Symbol,text]])$Result
- concat(measure2Result m,r)$ExpertSystemToolsPackage
-
- measureSpecific(name:ST,R:RT,p:PDEB):Record(measure:F,explanations:ST) ==
- name = "d03eefAnnaType" => measure(R,p)$d03eefAnnaType
- --name = "d03fafAnnaType" => measure(R,p)$d03fafAnnaType
- error("measureSpecific","invalid type name: " name)$ErrorFunctions
-
- measure(P:NumericalPDEProblem,R:RT):Measure ==
- p:PDEB := retract(P)$NumericalPDEProblem
- sofar := 0$F
- best := "none" :: ST
- routs := copy R
- routs := selectPDERoutines(routs)$RT
- empty?(routs)$RT =>
- error("measure", "no routines found")$ErrorFunctions
- rout := inspect(routs)$RT
- e := retract(rout.entry)$AnyFunctions1(Entry)
- meth := empty()$LST
- for i in 1..# routs repeat
- rout := extract!(routs)$RT
- e := retract(rout.entry)$AnyFunctions1(Entry)
- n := e.domainName
- if e.defaultMin > sofar then
- m := measureSpecific(n,R,p)
- if m.measure > sofar then
- sofar := m.measure
- best := n
- str:LST := [string(rout.key)$Symbol "measure: "
- outputMeasure(m.measure)$ExpertSystemToolsPackage " - "
- m.explanations]
- else
- str := [string(rout.key)$Symbol " is no better than other routines"]
- meth := append(meth,str)$LST
- [sofar,best,meth]
-
- measure(P:NumericalPDEProblem):Measure == measure(P,routines()$RT)
-
- solveSpecific(p:PDEB,n:ST):Result ==
- n = "d03eefAnnaType" => PDESolve(p)$d03eefAnnaType
- --n = "d03fafAnnaType" => PDESolve(p)$d03fafAnnaType
- error("solveSpecific","invalid type name: " n)$ErrorFunctions
-
- changeName(ans:Result,name:ST):Result ==
- sy:Symbol := coerce(name "Answer")$Symbol
- anyAns:Any := coerce(ans)$AnyFunctions1(Result)
- construct([[sy,anyAns]])$Result
-
- recoverAfterFail(p:PDEB,routs:RT,m:Measure,iint:Integer,r:Result):
- Record(a:Result,b:Measure) ==
- while positive?(iint) repeat
- routineName := m.name
- s := recoverAfterFail(routs,routineName(1..6),iint)$RT
- s case "failed" => iint := 0
- (s = "no action")@Boolean => iint := 0
- fl := coerce(s)$AnyFunctions1(ST)
- flrec:Record(key:Symbol,entry:Any):=[failure@Symbol,fl]
- m2 := measure(p::NumericalPDEProblem,routs)
- zero?(m2.measure) => iint := 0
- r2:Result := solveSpecific(p,m2.name)
- m := m2
- insert!(flrec,r2)$Result
- r := concat(r2,changeName(r,routineName))$ExpertSystemToolsPackage
- iany := search(ifail@Symbol,r2)$Result
- iany case "failed" => iint := 0
- iint := retract(iany)$AnyFunctions1(Integer)
- [r,m]
-
- solve(P:NumericalPDEProblem,t:RT):Result ==
- routs := copy(t)$RT
- m := measure(P,routs)
- p:PDEB := retract(P)$NumericalPDEProblem
- zero?(m.measure) => zeroMeasure m
- r := solveSpecific(p,n := m.name)
- iany := search(ifail@Symbol,r)$Result
- iint := 0$Integer
- if (iany case Any) then
- iint := retract(iany)$AnyFunctions1(Integer)
- if positive?(iint) then
- tu:Record(a:Result,b:Measure) := recoverAfterFail(p,routs,m,iint,r)
- r := tu.a
- m := tu.b
- expl := getExplanations(routs,n(1..6))$RoutinesTable
- expla := coerce(expl)$AnyFunctions1(LST)
- explaa:Record(key:Symbol,entry:Any) := ["explanations"::Symbol,expla]
- r := concat(construct([explaa]),r)
- concat(measure2Result m,r)$ExpertSystemToolsPackage
-
- solve(P:NumericalPDEProblem):Result == solve(P,routines()$RT)
-
- solve(xmi:F,xma:F,ymi:F,yma:F,nx:NNI,ny:NNI,pe:LEF,bo:List
- LEF,s:ST,to:DF):Result ==
- cx:PDEC := [f2df xmi, f2df xma, nx, 1, empty()$MDF, empty()$MDF]
- cy:PDEC := [f2df ymi, f2df yma, ny, 1, empty()$MDF, empty()$MDF]
- p:PDEB := [[ef2edf e for e in pe],[cx,cy],
- [[ef2edf u for u in w] for w in bo],s,to]
- solve(p::NumericalPDEProblem,routines()$RT)
-
- solve(xmi:F,xma:F,ymi:F,yma:F,nx:NNI,ny:NNI,pe:LEF,bo:List
- LEF,s:ST):Result ==
- solve(xmi,xma,ymi,yma,nx,ny,pe,bo,s,0.0001::DF)
-
-@
-\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>>
-
-<<package PDEPACK AnnaPartialDifferentialEquationPackage>>
-@
-\eject
-\begin{thebibliography}{99}
-\bibitem{1} nothing
-\end{thebibliography}
-\end{document}