(* Content-type: application/mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Mathematica 7.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       145,          7]
NotebookDataLength[     40348,       1144]
NotebookOptionsPosition[     35901,       1007]
NotebookOutlinePosition[     36679,       1034]
CellTagsIndexPosition[     36636,       1031]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{
Cell[TextData[{
 StyleBox["In this example, we use the package IntroToSymmetry.m to work out \
the first-order Lie-Backlund group of a coupled pair of PDEs, the boundary \
layer stream function equation with a buoyancy induced forcing term,\n \n",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["x",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["xy-",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["x",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["yy-",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["\[Beta](",
  FontFamily->"Symbol",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["ginf/rhoinf)(T-Tinf)-nu*",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["yyy=0, \n\nand a convection-diffusion equation for the \
temperature, \n\n(kappa)Tyy-",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["yTx+",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["\[CapitalPsi]",
  FontFamily->"Symbol",
  FontSize->14,
  FontWeight->"Plain"],
 StyleBox["xTy=0.",
  FontSize->14,
  FontWeight->"Plain"]
}], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell["\<\
This next command turns off spurious spelling error warnings.\
\>", "Text"],

Cell[BoxData[
 RowBox[{"Off", "[", 
  RowBox[{"General", "::", "spell"}], "]"}]], "Input"],

Cell["Clear all symbols in the current context.", "Text",
 CellChangeTimes->{{3.4715644485587473`*^9, 3.47156448605101*^9}}],

Cell[BoxData[
 RowBox[{"ClearAll", "[", 
  RowBox[{"Evaluate", "[", 
   RowBox[{
    RowBox[{"Context", "[", "]"}], "<>", "\"\<*\>\""}], "]"}], "]"}]], "Input"],

Cell[TextData[{
 StyleBox["First read in the package which is located in User Home \
Folder/Library/",
  FontWeight->"Plain"],
 StyleBox["Mathematica",
  FontWeight->"Plain",
  FontSlant->"Italic"],
 StyleBox["/Applications/SymmetryAnalysis.",
  FontWeight->"Plain"]
}], "Text",
 CellChangeTimes->{{3.472046215957556*^9, 3.472046255573135*^9}, {
  3.472046289795615*^9, 3.472046308115048*^9}, {3.4720466725423717`*^9, 
  3.472046673357225*^9}},
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"Needs", "[", "\"\<SymmetryAnalysis`IntroToSymmetry`\>\"", 
  "]"}]], "Input"],

Cell[TextData[{
 StyleBox["Enter the input equations as strings. The ambient reference \
temperature is ",
  FontWeight->"Plain"],
 "T",
 StyleBox["inf.",
  FontWeight->"Plain"]
}], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{
  "inputequation1", "=", 
   "\"\<D[psi[x,y],y,y,y]+\n(1/nu)*beta*(ginf/rhoinf)*(T[x,y]-Tinf)+\n\
(1/nu)*D[psi[x,y],x]*D[psi[x,y],y,y]-\n(1/nu)*D[psi[x,y],y]*D[psi[x,y],x,y]\>\
\""}], ";"}]], "Input"],

Cell["\<\
inputequation2=
\"D[T[x,y],y,y]-
(1/kappa)*D[psi[x,y],y]*D[T[x,y],x]+
(1/kappa)*D[psi[x,y],x]*D[T[x,y],y]\";\
\>", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[TextData[{
 StyleBox["The functions ",
  FontWeight->"Plain"],
 "psi",
 StyleBox[" and ",
  FontWeight->"Plain"],
 "T",
 StyleBox[" satisfy the equation system and these constraints must be applied \
in the form of a rule to the invariance condition. Be careful to check signs.",
  FontWeight->"Plain"]
}], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"rulesarray", "=", 
   RowBox[{"{", 
    RowBox[{
    "\"\<D[psi[x,y],y,y,y]\[Rule]-(1/nu)*beta*(ginf/rhoinf)*(T[x,y]-Tinf)-(1/\
nu)*D[psi[x,y],x]*D[psi[x,y],y,y]+(1/nu)*D[psi[x,y],y]*D[psi[x,y],x,y]\>\"", 
     ",", "\n", 
     "\"\<D[T[x,y],y,y]\[Rule](1/kappa)*D[psi[x,y],y]*D[T[x,y],x]-(1/kappa)*D[\
psi[x,y],x]*D[T[x,y],y]\>\""}], "}"}]}], ";"}]], "Input"],

Cell[TextData[StyleBox["Enter the list of independent variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"independentvariables", "=", 
   RowBox[{"{", 
    RowBox[{"\"\<x\>\"", ",", "\"\<y\>\""}], "}"}]}], ";"}]], "Input"],

Cell[TextData[StyleBox["Enter the list of dependent variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"dependentvariables", "=", 
   RowBox[{"{", 
    RowBox[{"\"\<psi\>\"", ",", "\"\<T\>\""}], "}"}]}], ";"}]], "Input"],

Cell[TextData[StyleBox["Enter the list of constant and/or function names that \
must be preserved when the equations are expressed in terms of generic \
variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"frozennames", "=", 
   RowBox[{"{", 
    RowBox[{
    "\"\<Tinf\>\"", ",", "\"\<beta\>\"", ",", "\"\<ginf\>\"", ",", 
     "\"\<kappa\>\"", ",", "\"\<nu\>\"", ",", "\"\<rhoinf\>\""}], "}"}]}], 
  ";"}]], "Input"],

Cell[TextData[StyleBox["Enter the maximum derivative order of the input \
equation set.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"porder", "=", "3"}], ";"}]], "Input"],

Cell[TextData[StyleBox["The maximum derivative order that the infinitesimals \
are assumed to depend on is specified by the input parameter rorder. This \
parameter is only nonzero when the user is looking for Lie contact groups or \
Lie-Backlund groups. For the usual case where one is searching for point \
groups set r=0.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"rorder", "=", "1"}], ";"}]], "Input"],

Cell[TextData[StyleBox["When searching for Lie-Backlund groups (rorder=1 or \
greater) one can, without loss of generality, leave the independent variables \
untransformed. The corresponding infinitesimals (the xse's) are set to zero \
by setting xseon=0. If one is searching for point groups then set xseon=1. \
The choice xseon=1 is also an option when looking for Lie-Backlund groups and \
this can be useful when looking for contact symmetries.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"xseon", "=", "0"}], ";"}]], "Input"],

Cell[TextData[StyleBox["When searching for Lie-Backlund groups it is \
necessary to differentiate the input equations with respect to the \
independent variables producing derivatives of order p+r. These higher order \
differential consequences are appended to the set of rules applied to the \
invariance condition. This process is carried out automatically when \
internalrules=1. For point groups the equation or equation system is the only \
rule or set of rules needed and one sets internalrules=0.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"internalrules", "=", "1"}], ";"}]], "Input"],

Cell[TextData[{
 StyleBox["Now work out the determining equations of the Lie point group that \
leaves inputequation1 invariant. The output is available as a table of \
strings called zdeterminingequations. Notice that rulesarray contains both \
equations and that therefore both equations in the set are applied to the \
invariance condition for each equation. The Mathematica function Timing \
outputs the time required for the ",
  FontWeight->"Plain",
  FontVariations->{"CompatibilityType"->0}],
 "FindDeterminingEquations",
 StyleBox[" function to execute.",
  FontWeight->"Plain",
  FontVariations->{"CompatibilityType"->0}]
}], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{"FindDeterminingEquations", "[", "\[IndentingNewLine]", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "frozennames", ",",
     "porder", ",", "rorder", ",", "xseon", ",", "inputequation1", ",", 
    "rulesarray", ",", "internalrules"}], "]"}], "]"}]], "Input"],

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(43843256\\), the time used = \\!\\(79.145294`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 43843256, 79.145294],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473418097693*^9, 3.471567832316759*^9, 
  3.4837887505796127`*^9}],

Cell[BoxData["\<\"The function FindDeterminingEquations is nearly complete. \
The invariance condition has been created with all rules applied. The final \
step in the generation of the determining equations is to sum together terms \
in the table of invariance condition terms (called infinitesimaltable) that \
are multiplied by the same combination of products of free y derivatives. The \
result is the table infinitesimaltablesums corresponding to matching \
y-derivative expressions. If the invariance condition is long as it often is \
this process could take a long time since it requires sorting through the \
table infinitesimaltable once for each possible combination of y derivative \
products. This is the rate limiting step in the function \
FindDeterminingEquations.Virtually all other steps are quite fast including \
the generation of the extended derivatives of the infinitesimals.\"\>"], \
"Print",
 CellChangeTimes->{3.469473418097693*^9, 3.471567832316759*^9, 
  3.483788752757825*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(35\\), the \
byte count of zdeterminingequations = \\!\\(36240\\), the memory in use = \\!\
\\(50674112\\), the time used = \\!\\(81.64047599999999`\\)\"\>",
  StringForm[
  "The determining equations have been expressed in terms of z-variables, the \
length of zdeterminingequations = ``, the byte count of zdeterminingequations \
= ``, the memory in use = ``, the time used = ``", 35, 36240, 50674112, 
   81.64047599999999],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473418097693*^9, 3.471567832316759*^9, 
  3.483788753042536*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(50679016\\), the time used = \\!\\(81.640951`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 50679016, 81.640951],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473418097693*^9, 3.471567832316759*^9, 
  3.483788753044735*^9}],

Cell[BoxData["\<\"FindDeterminingEquations has finished executing. You can \
look at the output in the table zdeterminingequations. Each entry in this \
table is a determining equation in string format expressed in terms of \
z-variables. Rules for converting between z-variables and conventional \
variables are contained in the table ztableofrules. To view the determining \
equations in terms of conventional variables use the command \
ToExpression[zdeterminingequations]/.ztableofrules. There are two other items \
the user may wish to look at; the equation converted to generic \
(x1,x2,...,y1,y2,...) variables is designated equationgenericvariables and \
the various derivatives of the equation that appear in the invariance \
condition can be viewed in the table invarconditiontable. Rules for \
converting between z-variables and generic variables are contained in the \
table ztableofrulesxy.\"\>"], "Print",
 CellChangeTimes->{3.469473418097693*^9, 3.471567832316759*^9, 
  3.4837887530466347`*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"2.499038999999982`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.469473421061585*^9, 3.471567834679125*^9, 
  3.483788753049124*^9}]
}, Open  ]],

Cell[TextData[StyleBox["Here are the determining equations in terms of \
z-variables. Set them equal to a new table called zdeterminingequations1.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"zdeterminingequations1", "=", "zdeterminingequations"}], 
  ";"}]], "Input"],

Cell[TextData[StyleBox["Now work out the determining equations of the point \
group which leaves inputequation2 invariant.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{"FindDeterminingEquations", "[", "\[IndentingNewLine]", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "frozennames", ",",
     "porder", ",", "rorder", ",", "xseon", ",", "inputequation2", ",", 
    "rulesarray", ",", "internalrules"}], "]"}], "]"}]], "Input"],

Cell[BoxData[
 InterpretationBox["\<\"The function FindDetermining Equations has begun, the \
memory in use = \\!\\(50388720\\), the time used = \
\\!\\(81.65031499999999`\\)\"\>",
  StringForm[
  "The function FindDetermining Equations has begun, the memory in use = ``, \
the time used = ``", 50388720, 81.65031499999999],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473421225604*^9, 3.471567834803811*^9, 
  3.483788753200243*^9}],

Cell[BoxData["\<\"The function FindDeterminingEquations is nearly complete. \
The invariance condition has been created with all rules applied. The final \
step in the generation of the determining equations is to sum together terms \
in the table of invariance condition terms (called infinitesimaltable) that \
are multiplied by the same combination of products of free y derivatives. The \
result is the table infinitesimaltablesums corresponding to matching \
y-derivative expressions. If the invariance condition is long as it often is \
this process could take a long time since it requires sorting through the \
table infinitesimaltable once for each possible combination of y derivative \
products. This is the rate limiting step in the function \
FindDeterminingEquations.Virtually all other steps are quite fast including \
the generation of the extended derivatives of the infinitesimals.\"\>"], \
"Print",
 CellChangeTimes->{3.469473421225604*^9, 3.471567834803811*^9, 
  3.483788753483335*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The determining equations have been expressed in \
terms of z-variables, the length of zdeterminingequations = \\!\\(13\\), the \
byte count of zdeterminingequations = \\!\\(6872\\), the memory in use = \
\\!\\(48252872\\), the time used = \\!\\(81.996267`\\)\"\>",
  StringForm[
  "The determining equations have been expressed in terms of z-variables, the \
length of zdeterminingequations = ``, the byte count of zdeterminingequations \
= ``, the memory in use = ``, the time used = ``", 13, 6872, 48252872, 
   81.996267],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473421225604*^9, 3.471567834803811*^9, 
  3.483788753516396*^9}],

Cell[BoxData[
 InterpretationBox["\<\"FindDeterminingEquations is done. The memory in use = \
\\!\\(48254336\\), the time used = \\!\\(81.996761`\\)\"\>",
  StringForm[
  "FindDeterminingEquations is done. The memory in use = ``, the time used = \
``", 48254336, 81.996761],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473421225604*^9, 3.471567834803811*^9, 
  3.4837887535176*^9}],

Cell[BoxData["\<\"FindDeterminingEquations has finished executing. You can \
look at the output in the table zdeterminingequations. Each entry in this \
table is a determining equation in string format expressed in terms of \
z-variables. Rules for converting between z-variables and conventional \
variables are contained in the table ztableofrules. To view the determining \
equations in terms of conventional variables use the command \
ToExpression[zdeterminingequations]/.ztableofrules. There are two other items \
the user may wish to look at; the equation converted to generic \
(x1,x2,...,y1,y2,...) variables is designated equationgenericvariables and \
the various derivatives of the equation that appear in the invariance \
condition can be viewed in the table invarconditiontable. Rules for \
converting between z-variables and generic variables are contained in the \
table ztableofrulesxy.\"\>"], "Print",
 CellChangeTimes->{3.469473421225604*^9, 3.471567834803811*^9, 
  3.483788753519547*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.34735799999999983`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.469473421607264*^9, 3.471567835131063*^9, 
  3.483788753520657*^9}]
}, Open  ]],

Cell[TextData[StyleBox["Here are the determining equations in terms of \
zvariables. Set them equal to a new table called zdeterminingequations2.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"zdeterminingequations2", "=", "zdeterminingequations"}], 
  ";"}]], "Input"],

Cell[TextData[StyleBox["Now concatenate these two sets of determining \
equations together to form the table zdeterminingequations3 that contains the \
determining equations for the entire set.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell["\<\
zdeterminingequations3=Join[
zdeterminingequations1,zdeterminingequations2];\
\>", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[TextData[StyleBox["How many determining equations are we dealing with?",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Length", "[", "zdeterminingequations3", "]"}]], "Input"],

Cell[BoxData["48"], "Output",
 CellChangeTimes->{3.46947342169311*^9, 3.47156783521983*^9, 
  3.483788753618939*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["Here is the correspondence between z-variables and \
conventional variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData["ztableofrules"], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"z1", "\[Rule]", "x"}], ",", 
   RowBox[{"z2", "\[Rule]", "y"}], ",", 
   RowBox[{"z3", "\[Rule]", 
    RowBox[{"psi", "[", 
     RowBox[{"x", ",", "y"}], "]"}]}], ",", 
   RowBox[{"z4", "\[Rule]", 
    RowBox[{"T", "[", 
     RowBox[{"x", ",", "y"}], "]"}]}], ",", 
   RowBox[{"z5", "\[Rule]", 
    RowBox[{
     SuperscriptBox["psi", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"1", ",", "0"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "y"}], "]"}]}], ",", 
   RowBox[{"z6", "\[Rule]", 
    RowBox[{
     SuperscriptBox["psi", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"0", ",", "1"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "y"}], "]"}]}], ",", 
   RowBox[{"z7", "\[Rule]", 
    RowBox[{
     SuperscriptBox["T", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"1", ",", "0"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "y"}], "]"}]}], ",", 
   RowBox[{"z8", "\[Rule]", 
    RowBox[{
     SuperscriptBox["T", 
      TagBox[
       RowBox[{"(", 
        RowBox[{"0", ",", "1"}], ")"}],
       Derivative],
      MultilineFunction->None], "[", 
     RowBox[{"x", ",", "y"}], "]"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.4694734217303*^9, 3.471567835259118*^9, 
  3.4837887537024717`*^9}]
}, Open  ]]
}, Open  ]],

Cell["\<\
Now solve the determining equations in terms of multivariable polynomials. \
The Mathematica function Solve uses Gaussian elimination to solve a large \
number of linear equations for the polynomial coefficients. The time roughly \
follows

time/timeref=((number of equations)/(number of equationsref))^n

where the exponent is between 2.4 and 2.7. The Mathematica function Timing \
outputs the time required for the SolveDeterminingEquations function to \
execute.\
\>", "Text"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{"SolveDeterminingEquations", "[", 
   RowBox[{
   "independentvariables", ",", "dependentvariables", ",", "rorder", ",", 
    "xseon", ",", "zdeterminingequations3", ",", 
    RowBox[{"order", "=", "3"}]}], "]"}], "]"}]], "Input"],

Cell[BoxData[
 InterpretationBox["\<\"The variable powertablelength is the number of terms \
required for each multivariate polynomial used for the infinitesimals. This \
number is determined by the choice of polynomial order and the number of \
zvariables. The time needed to solve the determining equations increases as \
powertable increases. powertablelength = \\!\\(165\\)\"\>",
  StringForm[
  "The variable powertablelength is the number of terms required for each \
multivariate polynomial used for the infinitesimals. This number is \
determined by the choice of polynomial order and the number of zvariables. \
The time needed to solve the determining equations increases as powertable \
increases. powertablelength = ``", 165],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.483788753773306*^9}],

Cell[BoxData["\<\"The polynomial expansions have been substituted into the \
determining equations. It is now time to collect the coefficients of various \
powers of zvariables into a table called table of coefficientsall. This step \
uses the function CoefficientList and is a fairly time consuming procedure.\"\
\>"], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.48378875425273*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(49786184\\), The time = \\!\
\\(82.515761`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 49786184, 82.515761],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.483788754253907*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of unknown polynomial coefficients = \
\\!\\(330\\)\"\>",
  StringForm["The number of unknown polynomial coefficients = ``", 330],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.483788754497617*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The number of equations for the polynomial \
coefficients = \\!\\(2257\\)\"\>",
  StringForm[
  "The number of equations for the polynomial coefficients = ``", 2257],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.4837887544985723`*^9}],

Cell[BoxData["\<\"Now it we are ready to use the function Solve to find the \
nonzero polynomial coefficients corresponding to the symmetries of the input \
equation(s). This can take a while.\"\>"], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.483788754499363*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(50356456\\), The time = \\!\
\\(82.761567`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 50356456, 82.761567],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.483788754500327*^9}],

Cell[BoxData["\<\"Solve has finished.\"\>"], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.483788755747167*^9}],

Cell[BoxData["\<\"The function SolveDeterminingEquations is finished \
executing.\"\>"], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.483788755777203*^9}],

Cell[BoxData[
 InterpretationBox["\<\"The memory in use = \\!\\(51421376\\), The time = \\!\
\\(84.03764`\\)\"\>",
  StringForm["The memory in use = ``, The time = ``", 51421376, 84.03764],
  Editable->False]], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.483788755778193*^9}],

Cell[BoxData["\<\"You can look at the output in the tables xsefunctions and \
etafunctions. Each entry in these tables is an infinitesimal function in \
string format expressed in terms of z-variables and the group parameters. The \
output can also be viewed with the group parameters stripped away by looking \
at the table infinitesimalgroups. In either case you may wish to convert the \
z-variables to conventional variables using the table ztableofrules. \
\\n\\nKeep in mind that this function only finds solutions of the determining \
equations that are of polynomial form. The determining equations may admit \
solutions that involve transcendental functions and/or integrals. Note that \
arbitrary functions may appear in the infinitesimals and that these can be \
detected by running the package function SolveDeterminingEquations for \
several polynomial orders. If terms of ever increasing order appear, then an \
arbitrary function is indicated.\"\>"], "Print",
 CellChangeTimes->{3.469473422952053*^9, 3.471567835311157*^9, 
  3.483788755779027*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"2.0427179999999936`", ",", "Null"}], "}"}]], "Output",
 CellChangeTimes->{3.46947342454429*^9, 3.471567837325934*^9, 
  3.483788755832837*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["Here are the infinitesimal transformation functions \
for the independent variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData["xsefunctions"], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"xse1[z1_, z2_, z3_, z4_, z5_, z6_, z7_, z8_]=0\"\>", 
   ",", "\<\"xse2[z1_, z2_, z3_, z4_, z5_, z6_, z7_, z8_]=0\"\>"}], 
  "}"}]], "Output",
 CellChangeTimes->{3.469473424704782*^9, 3.47156783746168*^9, 
  3.4837887559571342`*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell[TextData[StyleBox["and for the dependent variables.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData["etafunctions"], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"\<\"eta1[z1_, z2_, z3_, z4_, z5_, z6_, z7_, z8_]=b10 + (-b136 + \
b159)*z3 + b284*z5 + b136*z1*z5 + b2120*z6 + b2121*z1*z6 + b2122*z1^2*z6 + \
b159*z2*z6\"\>", 
   ",", "\<\"eta2[z1_, z2_, z3_, z4_, z5_, z6_, z7_, z8_]=b136*Tinf - \
4*b159*Tinf + (-b136 + 4*b159)*z4 + b284*z7 + b136*z1*z7 + b2120*z8 + \
b2121*z1*z8 + b2122*z1^2*z8 + b159*z2*z8\"\>"}], "}"}]], "Output",
 CellChangeTimes->{3.469473424760764*^9, 3.4715678375277767`*^9, 
  3.483788755999762*^9}]
}, Open  ]]
}, Open  ]],

Cell[CellGroupData[{

Cell["ToExpression[xsefunctions]", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0", ",", "0"}], "}"}]], "Output",
 CellChangeTimes->{3.4694734248114443`*^9, 3.4715678375782557`*^9, 
  3.483788756033143*^9}]
}, Open  ]],

Cell[CellGroupData[{

Cell["ToExpression[etafunctions]", "Input",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
   RowBox[{"b10", "+", 
    RowBox[{
     RowBox[{"(", 
      RowBox[{
       RowBox[{"-", "b136"}], "+", "b159"}], ")"}], " ", "z3"}], "+", 
    RowBox[{"b284", " ", "z5"}], "+", 
    RowBox[{"b136", " ", "z1", " ", "z5"}], "+", 
    RowBox[{"b2120", " ", "z6"}], "+", 
    RowBox[{"b2121", " ", "z1", " ", "z6"}], "+", 
    RowBox[{"b2122", " ", 
     SuperscriptBox["z1", "2"], " ", "z6"}], "+", 
    RowBox[{"b159", " ", "z2", " ", "z6"}]}], ",", 
   RowBox[{
    RowBox[{"b136", " ", "Tinf"}], "-", 
    RowBox[{"4", " ", "b159", " ", "Tinf"}], "+", 
    RowBox[{
     RowBox[{"(", 
      RowBox[{
       RowBox[{"-", "b136"}], "+", 
       RowBox[{"4", " ", "b159"}]}], ")"}], " ", "z4"}], "+", 
    RowBox[{"b284", " ", "z7"}], "+", 
    RowBox[{"b136", " ", "z1", " ", "z7"}], "+", 
    RowBox[{"b2120", " ", "z8"}], "+", 
    RowBox[{"b2121", " ", "z1", " ", "z8"}], "+", 
    RowBox[{"b2122", " ", 
     SuperscriptBox["z1", "2"], " ", "z8"}], "+", 
    RowBox[{"b159", " ", "z2", " ", "z8"}]}]}], "}"}]], "Output",
 CellChangeTimes->{3.4694734248612843`*^9, 3.4715678376445103`*^9, 
  3.483788756079248*^9}]
}, Open  ]],

Cell[TextData[StyleBox["Check the groups; xse's are on the left, eta's are on \
the right.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[BoxData[
 RowBox[{
  RowBox[{"Column", "[", "infinitesimalgroups", "]"}], "/.", 
  "\[InvisibleSpace]", "ztableofrules"}]], "Input"],

Cell[BoxData[
 TagBox[GridBox[{
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"1", ",", "0"}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"-", 
           RowBox[{"psi", "[", 
            RowBox[{"x", ",", "y"}], "]"}]}], "+", 
          RowBox[{"x", " ", 
           RowBox[{
            SuperscriptBox["psi", 
             TagBox[
              RowBox[{"(", 
               RowBox[{"1", ",", "0"}], ")"}],
              Derivative],
             MultilineFunction->None], "[", 
            RowBox[{"x", ",", "y"}], "]"}]}]}], ",", 
         RowBox[{"Tinf", "-", 
          RowBox[{"T", "[", 
           RowBox[{"x", ",", "y"}], "]"}], "+", 
          RowBox[{"x", " ", 
           RowBox[{
            SuperscriptBox["T", 
             TagBox[
              RowBox[{"(", 
               RowBox[{"1", ",", "0"}], ")"}],
              Derivative],
             MultilineFunction->None], "[", 
            RowBox[{"x", ",", "y"}], "]"}]}]}]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          RowBox[{"psi", "[", 
           RowBox[{"x", ",", "y"}], "]"}], "+", 
          RowBox[{"y", " ", 
           RowBox[{
            SuperscriptBox["psi", 
             TagBox[
              RowBox[{"(", 
               RowBox[{"0", ",", "1"}], ")"}],
              Derivative],
             MultilineFunction->None], "[", 
            RowBox[{"x", ",", "y"}], "]"}]}]}], ",", 
         RowBox[{
          RowBox[{
           RowBox[{"-", "4"}], " ", "Tinf"}], "+", 
          RowBox[{"4", " ", 
           RowBox[{"T", "[", 
            RowBox[{"x", ",", "y"}], "]"}]}], "+", 
          RowBox[{"y", " ", 
           RowBox[{
            SuperscriptBox["T", 
             TagBox[
              RowBox[{"(", 
               RowBox[{"0", ",", "1"}], ")"}],
              Derivative],
             MultilineFunction->None], "[", 
            RowBox[{"x", ",", "y"}], "]"}]}]}]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          SuperscriptBox["psi", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"1", ",", "0"}], ")"}],
            Derivative],
           MultilineFunction->None], "[", 
          RowBox[{"x", ",", "y"}], "]"}], ",", 
         RowBox[{
          SuperscriptBox["T", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"1", ",", "0"}], ")"}],
            Derivative],
           MultilineFunction->None], "[", 
          RowBox[{"x", ",", "y"}], "]"}]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          SuperscriptBox["psi", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"0", ",", "1"}], ")"}],
            Derivative],
           MultilineFunction->None], "[", 
          RowBox[{"x", ",", "y"}], "]"}], ",", 
         RowBox[{
          SuperscriptBox["T", 
           TagBox[
            RowBox[{"(", 
             RowBox[{"0", ",", "1"}], ")"}],
            Derivative],
           MultilineFunction->None], "[", 
          RowBox[{"x", ",", "y"}], "]"}]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{"x", " ", 
          RowBox[{
           SuperscriptBox["psi", 
            TagBox[
             RowBox[{"(", 
              RowBox[{"0", ",", "1"}], ")"}],
             Derivative],
            MultilineFunction->None], "[", 
           RowBox[{"x", ",", "y"}], "]"}]}], ",", 
         RowBox[{"x", " ", 
          RowBox[{
           SuperscriptBox["T", 
            TagBox[
             RowBox[{"(", 
              RowBox[{"0", ",", "1"}], ")"}],
             Derivative],
            MultilineFunction->None], "[", 
           RowBox[{"x", ",", "y"}], "]"}]}]}], "}"}]}], "}"}]},
    {
     RowBox[{"{", 
      RowBox[{
       RowBox[{"{", 
        RowBox[{"0", ",", "0"}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{
         RowBox[{
          SuperscriptBox["x", "2"], " ", 
          RowBox[{
           SuperscriptBox["psi", 
            TagBox[
             RowBox[{"(", 
              RowBox[{"0", ",", "1"}], ")"}],
             Derivative],
            MultilineFunction->None], "[", 
           RowBox[{"x", ",", "y"}], "]"}]}], ",", 
         RowBox[{
          SuperscriptBox["x", "2"], " ", 
          RowBox[{
           SuperscriptBox["T", 
            TagBox[
             RowBox[{"(", 
              RowBox[{"0", ",", "1"}], ")"}],
             Derivative],
            MultilineFunction->None], "[", 
           RowBox[{"x", ",", "y"}], "]"}]}]}], "}"}]}], "}"}]}
   },
   GridBoxAlignment->{"Columns" -> {{Left}}},
   GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}],
  "Column"]], "Output",
 CellChangeTimes->{3.4694734249126387`*^9, 3.471567837711812*^9, 
  3.483788756133823*^9}],

Cell["Check the infinitesimals in the determining equations.", "Text",
 CellChangeTimes->{{3.471145395559845*^9, 3.471145429404257*^9}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Simplify", "[", 
  RowBox[{"ToExpression", "[", "zdeterminingequations3", "]"}], 
  "]"}]], "Input",
 CellChangeTimes->{{3.471145481019026*^9, 3.4711455173104143`*^9}, 
   3.471146122753789*^9, {3.47154140257237*^9, 3.471541418863482*^9}, {
   3.4715667761993*^9, 3.4715667786858253`*^9}, 3.471567789726531*^9}],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
  "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", 
   ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", 
   "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", 
   ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", 
   "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", 
   ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", 
   "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", 
   ",", "True", ",", "True", ",", "True", ",", "True", ",", "True", ",", 
   "True", ",", "True", ",", "True", ",", "True"}], "}"}]], "Output",
 CellChangeTimes->{3.4715678377783127`*^9, 3.4837887561788816`*^9}]
}, Open  ]],

Cell[TextData[StyleBox["Notice that the infinite dimensional translation \
group on the wall normal coordinate still comes out, ie, this symmetry is not \
lost when the temperature equation is coupled to the boundary layer equation. \
This invariance allows the solution on a flat plate to be mapped to an \
arbitrary shaped wall (within reason). These are the first-order Lie-Backlund \
groups equivalent to point groups.",
 FontWeight->"Plain"]], "Text",
 ImageRegion->{{0, 1}, {0, 1}}],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"MaxMemoryUsed", "[", " ", "]"}]], "Input"],

Cell[BoxData["263036176"], "Output",
 CellChangeTimes->{3.469473424957309*^9, 3.4715678378487873`*^9, 
  3.483788756233322*^9}]
}, Open  ]]
},
WindowToolbars->{},
CellGrouping->Manual,
WindowSize->{881, 1019},
WindowMargins->{{114, Automatic}, {Automatic, 30}},
PrivateNotebookOptions->{"ColorPalette"->{RGBColor, -1}},
ShowCellLabel->True,
ShowCellTags->False,
RenderingOptions->{"ObjectDithering"->True,
"RasterDithering"->False},
MacintoshSystemPageSetup -> \
"0080001804P000000_82@?okonh34`9B;@<5:0?l00;m009H0UP0000068dB`0B`\n\
02d5X5k/02H80@4101P00BL?00400@00000000000000P0010000020D00000000\n\
0000000000000000000004T400002004",
Magnification->1.25,
FrontEndVersion->"7.0 for Mac OS X x86 (32-bit) (February 18, 2009)",
StyleDefinitions->"Default.nb"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{}
*)
(*CellTagsIndex
CellTagsIndex->{}
*)
(*NotebookFileOutline
Notebook[{
Cell[545, 20, 1612, 64, 190, "Text"],
Cell[2160, 86, 85, 2, 32, "Text"],
Cell[2248, 90, 90, 2, 33, "Input"],
Cell[2341, 94, 124, 1, 32, "Text"],
Cell[2468, 97, 160, 4, 33, "Input"],
Cell[2631, 103, 476, 13, 32, "Text"],
Cell[3110, 118, 101, 2, 33, "Input"],
Cell[3214, 122, 221, 8, 32, "Text"],
Cell[3438, 132, 235, 6, 91, "Input"],
Cell[3676, 140, 165, 6, 82, "Input"],
Cell[3844, 148, 351, 11, 51, "Text"],
Cell[4198, 161, 395, 9, 110, "Input"],
Cell[4596, 172, 130, 2, 32, "Text"],
Cell[4729, 176, 151, 4, 33, "Input"],
Cell[4883, 182, 128, 2, 32, "Text"],
Cell[5014, 186, 151, 4, 33, "Input"],
Cell[5168, 192, 229, 4, 51, "Text"],
Cell[5400, 198, 247, 7, 33, "Input"],
Cell[5650, 207, 153, 3, 32, "Text"],
Cell[5806, 212, 72, 2, 33, "Input"],
Cell[5881, 216, 390, 6, 70, "Text"],
Cell[6274, 224, 72, 2, 33, "Input"],
Cell[6349, 228, 514, 7, 89, "Text"],
Cell[6866, 237, 71, 2, 33, "Input"],
Cell[6940, 241, 569, 8, 89, "Text"],
Cell[7512, 251, 79, 2, 33, "Input"],
Cell[7594, 255, 675, 14, 89, "Text"],
Cell[CellGroupData[{
Cell[8294, 273, 335, 6, 72, "Input"],
Cell[8632, 281, 427, 8, 45, "Print"],
Cell[9062, 291, 1006, 14, 235, "Print"],
Cell[10071, 307, 701, 12, 64, "Print"],
Cell[10775, 321, 393, 8, 45, "Print"],
Cell[11171, 331, 1010, 14, 216, "Print"],
Cell[12184, 347, 182, 4, 33, "Output"]
}, Open  ]],
Cell[12381, 354, 212, 3, 32, "Text"],
Cell[12596, 359, 111, 3, 33, "Input"],
Cell[12710, 364, 188, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[12923, 371, 335, 6, 72, "Input"],
Cell[13261, 379, 443, 9, 45, "Print"],
Cell[13707, 390, 1006, 14, 235, "Print"],
Cell[14716, 406, 683, 12, 64, "Print"],
Cell[15402, 420, 391, 8, 45, "Print"],
Cell[15796, 430, 1008, 14, 216, "Print"],
Cell[16807, 446, 184, 4, 33, "Output"]
}, Open  ]],
Cell[17006, 453, 211, 3, 32, "Text"],
Cell[17220, 458, 111, 3, 33, "Input"],
Cell[17334, 463, 259, 4, 51, "Text"],
Cell[17596, 469, 133, 4, 50, "Input"],
Cell[17732, 475, 141, 2, 32, "Text"],
Cell[CellGroupData[{
Cell[17898, 481, 80, 1, 33, "Input"],
Cell[17981, 484, 116, 2, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[18134, 491, 166, 3, 32, "Text"],
Cell[CellGroupData[{
Cell[18325, 498, 39, 0, 33, "Input"],
Cell[18367, 500, 1408, 48, 69, "Output"]
}, Open  ]]
}, Open  ]],
Cell[19802, 552, 489, 11, 145, "Text"],
Cell[CellGroupData[{
Cell[20316, 567, 279, 6, 53, "Input"],
Cell[20598, 575, 857, 14, 83, "Print"],
Cell[21458, 591, 416, 6, 83, "Print"],
Cell[21877, 599, 310, 6, 25, "Print"],
Cell[22190, 607, 298, 6, 25, "Print"],
Cell[22491, 615, 325, 7, 25, "Print"],
Cell[22819, 624, 297, 4, 64, "Print"],
Cell[23119, 630, 310, 6, 25, "Print"],
Cell[23432, 638, 142, 2, 25, "Print"],
Cell[23577, 642, 186, 3, 25, "Print"],
Cell[23766, 647, 308, 6, 25, "Print"],
Cell[24077, 655, 1063, 14, 254, "Print"],
Cell[25143, 671, 182, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[25362, 680, 174, 3, 32, "Text"],
Cell[25539, 685, 38, 0, 33, "Input"],
Cell[25580, 687, 276, 6, 53, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[25893, 698, 122, 2, 32, "Text"],
Cell[CellGroupData[{
Cell[26040, 704, 38, 0, 33, "Input"],
Cell[26081, 706, 502, 9, 110, "Output"]
}, Open  ]]
}, Open  ]],
Cell[CellGroupData[{
Cell[26632, 721, 75, 1, 33, "Input"],
Cell[26710, 724, 166, 4, 33, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[26913, 733, 75, 1, 33, "Input"],
Cell[26991, 736, 1158, 31, 92, "Output"]
}, Open  ]],
Cell[28164, 770, 156, 3, 32, "Text"],
Cell[28323, 775, 137, 3, 33, "Input"],
Cell[28463, 780, 5416, 178, 195, "Output"],
Cell[33882, 960, 136, 1, 32, "Text"],
Cell[CellGroupData[{
Cell[34043, 965, 335, 6, 33, "Input"],
Cell[34381, 973, 780, 12, 91, "Output"]
}, Open  ]],
Cell[35176, 988, 488, 7, 89, "Text"],
Cell[CellGroupData[{
Cell[35689, 999, 66, 1, 33, "Input"],
Cell[35758, 1002, 127, 2, 33, "Output"]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
