crack.red 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. module crack; % Top level CRACK module.
  2. % Revised for development system by FJW, 28 July 1998
  3. % May require more than one run to compile using Win32-PSL.
  4. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  5. % %
  6. % CRACK Version 21 March 96 %
  7. % %
  8. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  9. comment
  10. Title: CRACK
  11. Authors:
  12. Andreas Brand
  13. Institut fuer Informatik
  14. Friedrich Schiller Universitaet Jena
  15. 07740 Jena, Germany
  16. email: maa@hpux.rz.uni-jena.de
  17. tel.: + 49 3641 631123 ,
  18. Thomas Wolf
  19. School of Mathematical Sciences
  20. Queen Mary and Westfield College
  21. University of London
  22. London E1 4NS
  23. email: T.Wolf@maths.qmw.ac.uk
  24. tel.: + 44 71 975 5493
  25. Date of last change: 1996-03-21
  26. Abstract:
  27. CRACK is a package for solving overdetermined systems of partial or
  28. ordinary differential equations (PDEs, ODEs). Examples of programs
  29. which make use of CRACK for investigating ODEs (finding symmetries,
  30. first integrals, an equivalent Lagrangian or a "differential
  31. factorization") are added. The manual CRACK.TEX gives further details.
  32. REDUCE version: 3.6.
  33. CRACK uses the package ODESOLVE of Malcolm MacCallum which is included
  34. in REDUCE 3.6.
  35. T. Wolf, An Analytic Algorithm for Decoupling and Integrating
  36. systems of Nonlinear Partial Differential Equations, J. Comp.
  37. Phys., no. 3, 60 (1985) 437-446.
  38. T. Wolf, The Symbolic Integration of Exact PDEs, preprint.
  39. M.A.H. MacCallum, An Ordinary Differential Equation Solver for REDUCE,
  40. Proc. ISAAC'88, Springer Lect. Notes in Comp Sci. 358,
  41. 196--205.
  42. Keywords: partial differential equations, computer analytic
  43. $
  44. %% Additions by FJW. The following are defined in PSL but not CSL.
  45. %% (See also crstart.)
  46. fluid '(promptstring!*)$
  47. if getd 'setprop then flag('(setprop), 'lose);
  48. % Could also use conditional parsing (!#if) for this.
  49. % The following smacro definitions MUST be in this header file!
  50. symbolic smacro procedure flag1(U, V);
  51. %% The identifier U is flagged V.
  52. %% FJW: Defined and flagged lose in PSL only.
  53. %% FJW: This implementation based on the PSL manual.
  54. flag({U}, V)$
  55. symbolic smacro procedure remflag1(U, V);
  56. %% Remove V from the property list of identifier U.
  57. %% FJW: Defined and flagged lose in PSL only.
  58. %% FJW: This implementation based on the PSL manual.
  59. remflag({U}, V)$
  60. %% !#if (equal version!* "REDUCE Development Version")
  61. %% ACH: To build with the bootstrappping version need this test instead:
  62. !#if (neq version!* "REDUCE 3.6")
  63. % Taken from crinit, but needs to be here:
  64. fluid '(REDUCEFUNCTIONS_
  65. cont_ odesolve_ print_ print_more print_all
  66. facint_ potint_ freeint_ level_ poly_only safeint_ solvealg_
  67. logoprint_ independence_ tr_gensep tr_decouple homogen_
  68. tr_genint tr_main contradiction_ stop_ fname_ nfct_ fnew_
  69. ftem_ genint_ gensep_ new_gensep ineq_ time_ adjust_fnc
  70. subst_0 subst_1 subst_2 subst_3 subst_4 cost_limit5
  71. pdelimit_0 pdelimit_1 pdelimit_2 pdelimit_3 pdelimit_4
  72. length_inc tr_redlength proc_list_ full_proc_list_ to_do_list
  73. !*batch_mode printmenu_ expert_mode repeat_mode
  74. dec_hist dec_hist_list depl_copy_
  75. nequ_ eqname_ allflags_ prop_list maxalgsys_ stepcounter_
  76. batchcount_ crackrules_ userrules_ rulelist_ history_
  77. explog_ trig1_ trig2_ trig3_ trig4_ trig5_ trig6_ trig7_ trig8_
  78. max_red_len max_factor orderings_ tr_orderings simple_orderings
  79. lex_ collect_sol)$
  80. create!-package('(
  81. crack
  82. crinit % initialisation and help
  83. crmain % main module
  84. crdec % decouple module
  85. crsep % separation module
  86. crgensep % generalized separation module
  87. crint % integration of pde's module
  88. crsimp % simplification and substitution module
  89. crutil % procedures used in several modules
  90. crsimpso % simplification of the results
  91. %% FJW: crintfix is for REDUCE 3.6 (and earlier versions?)
  92. %% crintfix % patch for the integration
  93. crequsol % equivalence of solutions
  94. crshort % reductions in length
  95. crorder % orderings support
  96. crstart % FJW: Startup code (moved from module crack)
  97. ), nil);
  98. !#else
  99. % For distributed REDUCE:
  100. % FJW: Load support packages, but not when compiling:
  101. !#if (getd 'packages_to_load)
  102. packages_to_load ezgcd,odesolve,factor,int,algint;
  103. !#else % for REDUCE 3.6
  104. apply1('load_package, '(ezgcd odesolve factor int algint));
  105. !#endif
  106. in crinit!.red$ % initialisation and help
  107. in crmain!.red$ % main module
  108. in crdec!.red$ % decouple module
  109. in crsep!.red$ % separation module
  110. in crgensep!.red$ % generalized separation module
  111. in crint!.red$ % integration of pde's module
  112. in crsimp!.red$ % simplification and substitution module
  113. in crutil!.red$ % procedures used in several modules
  114. in crsimpso!.red$ % simplification of the results
  115. !#if (equal version!* "REDUCE 3.6")
  116. in crintfix!.red$ % patch for the integration
  117. !#endif
  118. in crequsol!.red$ % equivalence of solutions
  119. in crshort!.red$ % reductions in length
  120. in crorder!.red$ % orderings support
  121. %********************************************************************
  122. %
  123. % $Id: crack.red,v 1.1 1998/06/04 15:03:16 tw Exp tw $
  124. %
  125. %********************************************************************
  126. setcrackflags()$
  127. !*fullroots:=t$
  128. !*dfprint:=t$
  129. !#endif
  130. endmodule;
  131. end$