This file is indexed.

/usr/share/axiom-20170501/src/algebra/D03EEFA.spad is in axiom-source 20170501-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
)abbrev domain D03EEFA d03eefAnnaType
++ Author: Brian Dupee
++ Date Created: June 1996
++ Date Last Updated: June 1996
++ References:
++ Dupe95 Using Computer Algebra to Choose and Apply Numerical Routines
++ Dewa92 Using Computer Algebra to Select Numerical Algorithms
++ Description:
++ \axiomType{d03eefAnnaType} is a domain of 
++ \axiomType{PartialDifferentialEquationsSolverCategory}
++ for the NAG routines D03EEF/D03EDF.

d03eefAnnaType() : SIG == CODE where
  -- 2D Elliptic PDE

  LEDF  ==> List Expression DoubleFloat
  EDF  ==> Expression DoubleFloat
  LDF  ==> List DoubleFloat
  MDF  ==> Matrix DoubleFloat
  DF  ==> DoubleFloat
  F  ==> Float
  FI  ==> Fraction Integer
  VEF  ==> Vector Expression Float
  EF  ==> Expression Float
  MEF  ==> Matrix Expression Float
  NNI  ==> NonNegativeInteger
  INT  ==> Integer
  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:String, tol:DF)

  SIG ==> PartialDifferentialEquationsSolverCategory 

  CODE ==> Result add

    import d03AgentsPackage, NagPartialDifferentialEquationsPackage
    import ExpertSystemToolsPackage

    measure(R:RoutinesTable,args:PDEB) ==
      (# (args.constraints) > 2)@Boolean =>
        [0$F,"d03eef/d03edf is unsuitable for PDEs of order more than 2"]
      elliptic?(args) => 
        m := getMeasure(R,d03eef :: Symbol)$RoutinesTable
        [m,"d03eef/d03edf is suitable"]
      [0$F,"d03eef/d03edf is unsuitable for hyperbolic or parabolic PDEs"]

    PDESolve(args:PDEB) ==
      xcon := first(args.constraints)
      ycon := second(args.constraints) 
      nx := xcon.grid
      ny := ycon.grid 
      p := args.pde
      x1 := xcon.start
      x2 := xcon.finish
      y1 := ycon.start
      y2 := ycon.finish
      lda := ((4*(nx+1)*(ny+1)+2) quo 3)$INT
      scheme:String :=
       central?((x2-x1)/2,(y2-y1)/2,args.pde) => "C"
       "U"
      asp73:Union(fn:FileName,fp:Asp73(PDEF)) :=
       [retract(vector([edf2ef u for u in p])$VEF)$Asp73(PDEF)]
      asp74:Union(fn:FileName,fp:Asp74(BNDY)) := 
       [retract(matrix([[edf2ef v for v in w] _
                 for w in args.f])$MEF)$Asp74(BNDY)]
      fde := d03eef(x1,x2,y1,y2,nx,ny,lda,scheme,-1,asp73,asp74)
      ub := new(1,nx*ny,0$DF)$MDF
      A := search(a::Symbol,fde)$Result
      A case "failed" => empty()$Result
      AA := A::Any
      fdea := retract(AA)$AnyFunctions1(MDF)
      r := search(rhs::Symbol,fde)$Result
      r case "failed" => empty()$Result
      rh := r::Any
      fderhs := retract(rh)$AnyFunctions1(MDF)
      d03edf(nx,ny,lda,15,args.tol,0,fdea,fderhs,ub,-1)