ArrayXdInt.SymW 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. MODULE ArrayXdInt;
  2. IMPORT SYSTEM, NbrInt, ArrayXdBytes, Array1d := Array1dInt, dbgOut := KernelLog, DataErrors, DataIO;
  3. CONST
  4. generic* = 0;
  5. vector* = 1;
  6. matrix* = 2;
  7. cube* = 3;
  8. hcube* = 4;
  9. VERSION* = 1;
  10. StrictBoundaryC* = 0;
  11. AbsorbingBoundaryC* = 1;
  12. PeriodicBoundaryC* = 2;
  13. SymmetricOnBoundaryC* = 3;
  14. SymmetricOffBoundaryC* = 4;
  15. AntisymmetricOnBoundaryC* = 5;
  16. AntisymmetricOffBoundaryC* = 6;
  17. TYPE
  18. Value* = Array1d.Value;
  19. Index* = LONGINT;
  20. Array1* = Array1d.Array;
  21. Array2* = POINTER TO ARRAY OF ARRAY OF Value;
  22. Array3* = POINTER TO ARRAY OF ARRAY OF ARRAY OF Value;
  23. Array4* = POINTER TO ARRAY OF ARRAY OF ARRAY OF ARRAY OF Value;
  24. Map* = Array1d.Map;
  25. Array* = OBJECT {EXCLUSIVE} (ArrayXdBytes.Array)
  26. VAR
  27. data-: Array1;
  28. PROCEDURE ^ Allocate*(size: LONGINT; VAR adr: Index; VAR ptr: ANY);
  29. PROCEDURE ^ GetInfo*(VAR elementsize: Index);
  30. PROCEDURE ^ AlikeX*(): ArrayXdBytes.Array;
  31. PROCEDURE ^ Read*(R: DataIO.Reader);
  32. PROCEDURE ^ Write*(W: DataIO.Writer);
  33. PROCEDURE ^ Type*(): SHORTINT;
  34. PROCEDURE ^ Get1*(x: Index): Value;
  35. PROCEDURE ^ Set1*(x: Index; v: Value);
  36. PROCEDURE ^ Get2*(x, y: Index): Value;
  37. PROCEDURE ^ Set2*(x, y: Index; v: Value);
  38. PROCEDURE ^ Get3*(x, y, z: Index): Value;
  39. PROCEDURE ^ Set3*(x, y, z: Index; v: Value);
  40. PROCEDURE ^ Get4*(x, y, z, t: Index): Value;
  41. PROCEDURE ^ Set4*(x, y, z, t: Index; v: Value);
  42. PROCEDURE ^ GetX*(VAR x: ARRAY OF Index; dim: Index): Value;
  43. PROCEDURE ^ SetX*(VAR x: ARRAY OF Index; dim: Index; v: Value);
  44. PROCEDURE ^ Get1BAbsorbing*(x: Index): Value;
  45. PROCEDURE ^ Get2BAbsorbing*(x, y: Index): Value;
  46. PROCEDURE ^ Get3BAbsorbing*(x, y, z: Index): Value;
  47. PROCEDURE ^ Get4BAbsorbing*(x, y, z, t: Index): Value;
  48. PROCEDURE ^ GetXBAbsorbing*(b: ARRAY OF Index; dim: Index): Value;
  49. PROCEDURE ^ Get1BPeriodic*(x: Index): Value;
  50. PROCEDURE ^ Get2BPeriodic*(x, y: Index): Value;
  51. PROCEDURE ^ Get3BPeriodic*(x, y, z: Index): Value;
  52. PROCEDURE ^ Get4BPeriodic*(x, y, z, t: Index): Value;
  53. PROCEDURE ^ GetXBPeriodic*(b: ARRAY OF Index; dim: Index): Value;
  54. PROCEDURE ^ Get1BSymmetricOffB*(x: Index): Value;
  55. PROCEDURE ^ Get2BSymmetricOffB*(x, y: Index): Value;
  56. PROCEDURE ^ Get3BSymmetricOffB*(x, y, z: Index): Value;
  57. PROCEDURE ^ Get4BSymmetricOffB*(x, y, z, t: Index): Value;
  58. PROCEDURE ^ GetXBSymmetricOffB*(b: ARRAY OF Index; dim: Index): Value;
  59. PROCEDURE ^ Get1BSymmetricOnB*(x: Index): Value;
  60. PROCEDURE ^ Get2BSymmetricOnB*(x, y: Index): Value;
  61. PROCEDURE ^ Get3BSymmetricOnB*(x, y, z: Index): Value;
  62. PROCEDURE ^ Get4BSymmetricOnB*(x, y, z, t: Index): Value;
  63. PROCEDURE ^ GetXBSymmetricOnB*(b: ARRAY OF Index; dim: Index): Value;
  64. PROCEDURE ^ Get1BAntisymmetricOffB*(x: Index): Value;
  65. PROCEDURE ^ Get2BAntisymmetricOffB*(x, y: Index): Value;
  66. PROCEDURE ^ Get3BAntisymmetricOffB*(x, y, z: Index): Value;
  67. PROCEDURE ^ Get4BAntisymmetricOffB*(x, y, z, t: Index): Value;
  68. PROCEDURE ^ GetXBAntisymmetricOffB*(b: ARRAY OF Index; dim: Index): Value;
  69. PROCEDURE ^ Get1BAntisymmetricOnB*(x: Index): Value;
  70. PROCEDURE ^ Get2BAntisymmetricOnB*(x, y: Index): Value;
  71. PROCEDURE ^ Get3BAntisymmetricOnB*(x, y, z: Index): Value;
  72. PROCEDURE ^ Get4BAntisymmetricOnB*(x, y, z, t: Index): Value;
  73. PROCEDURE ^ GetXBAntisymmetricOnB*(b: ARRAY OF Index; dim: Index): Value;
  74. PROCEDURE ^ CopyToArray*(dest: Array; srcpos, srclen, destpos, destlen: ArrayXdBytes.IndexArray);
  75. PROCEDURE ^ MapAll*(m: Array1d.Map);
  76. PROCEDURE ^ Negate*;
  77. PROCEDURE ^ Add*(x: Array);
  78. PROCEDURE ^ Subtract*(x: Array);
  79. PROCEDURE ^ Multiply*(a: Value);
  80. PROCEDURE ^ Divide*(a: Value);
  81. PROCEDURE ^ Modulus*(a: Value);
  82. PROCEDURE ^ dbgWrite*;
  83. END Array;
  84. PROCEDURE ^ New1d*(ox, w: Index): Array;
  85. PROCEDURE ^ New2d*(ox, w, oy, h: Index): Array;
  86. PROCEDURE ^ New3d*(ox, w, oy, h, oz, d: Index): Array;
  87. PROCEDURE ^ New4d*(ox, w, oy, h, oz, d, ot, dt: Index): Array;
  88. PROCEDURE ^ CopyVecToVec*(src, dest: Array; srcx, destx, len: Index);
  89. PROCEDURE ^ CopyMtxToVec*(src, dest: Array; dim: Index; srcx, srcy, destx, len: Index);
  90. PROCEDURE ^ CopyVecToMtx*(src, dest: Array; dim: Index; srcx, destx, desty, len: Index);
  91. PROCEDURE ^ CopyCubeToVec*(src, dest: Array; dim: Index; srcx, srcy, srcz, destx, len: Index);
  92. PROCEDURE ^ CopyVecToCube*(src, dest: Array; dim: Index; srcx, destx, desty, destz, len: Index);
  93. PROCEDURE ^ CopyHCubeToVec*(src, dest: Array; dim: Index; srcx, srcy, srcz, srct, destx, len: Index);
  94. PROCEDURE ^ CopyVecToHCube*(src, dest: Array; dim: Index; srcx, destx, desty, destz, destt, len: Index);
  95. PROCEDURE ^ CopyMtxToMtx*(src, dest: Array; srcx, srcy, destx, desty, lenx, leny: Index);
  96. PROCEDURE ^ CopyCubeToMtx*(src, dest: Array; dimx, dimy: Index; srcx, srcy, srcz, destx, desty, lenx, leny: Index);
  97. PROCEDURE ^ CopyMtxToCube*(src, dest: Array; dimx, dimy: Index; srcx, srcy, destx, desty, destz, lenx, leny: Index);
  98. PROCEDURE ^ CopyHCubeToMtx*(src, dest: Array; dimx, dimy: Index; srcx, srcy, srcz, srct, destx, desty, lenx, leny: Index);
  99. PROCEDURE ^ CopyMtxToHCube*(src, dest: Array; dimx, dimy: Index; srcx, srcy, destx, desty, destz, destt, lenx, leny: Index);
  100. PROCEDURE ^ CopyCubeToCube*(src, dest: Array; srcx, srcy, srcz, destx, desty, destz, lenx, leny, lenz: Index);
  101. PROCEDURE ^ CopyHCubeToCube*(src, dest: Array; dimx, dimy, dimz: Index; srcx, srcy, srcz, srct, destx, desty, destz, lenx, leny, lenz: Index);
  102. PROCEDURE ^ CopyCubeToHCube*(src, dest: Array; dimx, dimy, dimz: Index; srcx, srcy, srcz, destx, desty, destz, destt, lenx, leny, lenz: Index);
  103. PROCEDURE ^ CopyHCubeToHCube*(src, dest: Array; srcx, srcy, srcz, srct, destx, desty, destz, destt, lenx, leny, lenz, lent: Index);
  104. PROCEDURE ^ CopyArrayToVec*(VAR src: ARRAY OF Value; dest: Array; srcx, destx, len: Index);
  105. PROCEDURE ^ CopyVecToArray*(src: Array; VAR dest: ARRAY OF Value; srcx, destx, len: Index);
  106. PROCEDURE ^ CopyArrayToMtx*(VAR src: ARRAY OF ARRAY OF Value; dest: Array; srcx, srcy, destx, desty, lenx, leny: Index);
  107. PROCEDURE ^ CopyMtxToArray*(src: Array; VAR dest: ARRAY OF ARRAY OF Value; srcx, srcy, destx, desty, lenx, leny: Index);
  108. PROCEDURE ^ CopyArrayToCube*(VAR src: ARRAY OF ARRAY OF ARRAY OF Value; dest: Array; srcx, srcy, srcz, destx, desty, destz, lenx, leny, lenz: Index);
  109. PROCEDURE ^ CopyCubeToArray*(src: Array; VAR dest: ARRAY OF ARRAY OF ARRAY OF Value; srcx, srcy, srcz, destx, desty, destz, lenx, leny, lenz: Index);
  110. PROCEDURE ^ CopyArrayToHCube*(VAR src: ARRAY OF ARRAY OF ARRAY OF ARRAY OF Value; dest: Array; srcx, srcy, srcz, srct, destx, desty, destz, destt, lenx, leny, lenz, lent: Index);
  111. PROCEDURE ^ CopyHCubeToArray*(src: Array; VAR dest: ARRAY OF ARRAY OF ARRAY OF ARRAY OF Value; srcx, srcy, srcz, srct, destx, desty, destz, destt, lenx, leny, lenz, lent: Index);
  112. PROCEDURE ^ CopyArrayToArrayPartB*(src: Array; dest: ArrayXdBytes.ArrayMemoryStructure; boundaryCondition: SHORTINT; srcpos, srclen, destpos, destlen: ArrayXdBytes.IndexArray);
  113. OPERATOR ^ ":="-(VAR l: Array; VAR r: ARRAY OF ARRAY OF ARRAY OF ARRAY OF Value);
  114. OPERATOR ^ ":="-(VAR l: Array; VAR r: ARRAY OF ARRAY OF ARRAY OF Value);
  115. OPERATOR ^ ":="-(VAR l: Array1; r: Array);
  116. OPERATOR ^ ":="-(VAR l: Array2; r: Array);
  117. OPERATOR ^ ":="-(VAR l: Array3; r: Array);
  118. PROCEDURE ^ Fill*(l: Array; r: Value);
  119. OPERATOR ^ ":="-(VAR l: Array; r: Value);
  120. PROCEDURE ^ Add*(l, r, res: Array);
  121. OPERATOR ^ "+"-(l, r: Array): Array;
  122. PROCEDURE ^ Sub*(l, r, res: Array);
  123. OPERATOR ^ "-"-(l, r: Array): Array;
  124. PROCEDURE ^ Mul*(l, r, res: Array);
  125. PROCEDURE ^ Div*(l, r, res: Array);
  126. PROCEDURE ^ Mod*(l, r, res: Array);
  127. PROCEDURE ^ AddAV*(l: Array; r: Value; res: Array);
  128. OPERATOR ^ "+"(l: Array; r: Value): Array;
  129. OPERATOR ^ "+"(l: Value; r: Array): Array;
  130. PROCEDURE ^ MulAV*(l: Array; r: Value; res: Array);
  131. OPERATOR ^ "*"(l: Array; r: Value): Array;
  132. OPERATOR ^ "*"(l: Value; r: Array): Array;
  133. PROCEDURE ^ DivAV*(l: Array; r: Value; res: Array);
  134. PROCEDURE ^ DivVA*(l: Value; r: Array; res: Array);
  135. PROCEDURE ^ ModAV*(l: Array; r: Value; res: Array);
  136. PROCEDURE ^ ModVA*(l: Value; r: Array; res: Array);
  137. PROCEDURE ^ SubAV*(l: Array; r: Value; res: Array);
  138. PROCEDURE ^ SubVA*(l: Value; r: Array; res: Array);
  139. OPERATOR ^ "-"-(l: Value; r: Array): Array;
  140. PROCEDURE ^ LoadArray(R: DataIO.Reader; VAR obj: OBJECT);
  141. PROCEDURE ^ StoreArray(W: DataIO.Writer; obj: OBJECT);
  142. PROCEDURE ^ Register;
  143. PROCEDURE ^ Load*(R: DataIO.Reader; VAR obj: Array);
  144. PROCEDURE ^ Store*(W: DataIO.Writer; obj: Array);
  145. BEGIN
  146. END ArrayXdInt.