diff --git a/doc/userdoc.org b/doc/userdoc.org index 814f71d8109338f58a1b01e3a5e885f7ecf8bea0..730486dd17ed76e0a30e2a935807ea36228317d2 100644 --- a/doc/userdoc.org +++ b/doc/userdoc.org @@ -74,10 +74,10 @@ mesh nodes according to a user-defined vector field $T: \mathbb{R}^2 let pi:R, pi = acos(-1); let theta:R^2 -> R, x -> 0.5*pi*(x[0]*x[0]-1)*(x[1]*x[1]-1); - let M:R^2 -> R^2x2, x -> (cos(theta(x)), -sin(theta(x)), - sin(theta(x)), cos(theta(x))); + let M:R^2 -> R^2x2, x -> [[cos(theta(x)), -sin(theta(x))], + [sin(theta(x)), cos(theta(x))]]; let T: R^2 -> R^2, x -> x + M(x)*x; - let m:mesh, m = cartesian2dMesh((-1,-1), (1,1), (20,20)); + let m:mesh, m = cartesian2dMesh([-1,-1], [1,1], (20,20)); m = transform(m, T); @@ -856,10 +856,10 @@ are sorted by type of left hand side variable. | ~R^2~ | | ~0~ (special value) | | list of 2 scalar (~B~, ~N~, ~Z~ or ~R~) expressions | - An example of initialization using a list or the special value ~0~ is + An example of initialization using an $\mathbb{R}^2$ value or the special value ~0~ is #+NAME: affectation-to-R2-from-list #+BEGIN_SRC pugs :exports both :results output - let u:R^2, u = (-3, 2.5); + let u:R^2, u = [-3, 2.5]; let z:R^2, z = 0; cout << "u = " << u << "\n"; cout << "z = " << z << "\n"; @@ -881,10 +881,10 @@ are sorted by type of left hand side variable. | ~R^3~ | | ~0~ (special value) | | list of 3 scalar (~B~, ~N~, ~Z~ or ~R~) expressions | - An example of initialization using a list is + An example of initialization is #+NAME: affectation-to-R3-from-list #+BEGIN_SRC pugs :exports both :results output - let u:R^3, u = (-3, 2.5, 1E-2); + let u:R^3, u = [-3, 2.5, 1E-2]; let z:R^3, z = 0; cout << "u = " << u << "\n"; cout << "z = " << z << "\n"; @@ -907,11 +907,12 @@ are sorted by type of left hand side variable. | ~R^2x2~ | | ~0~ (special value) | | list of 4 scalar (~B~, ~N~, ~Z~ or ~R~) expressions | - An example of initialization using a list or the special value ~0~ is + An example of initialization using an $\mathbb{R}^{2\times2}$ value or + the special value ~0~ is #+NAME: affectation-to-R2x2-from-list #+BEGIN_SRC pugs :exports both :results output - let u:R^2x2, u = (-3, 2.5, - 4, 1.2); + let u:R^2x2, u = [[-3, 2.5], + [ 4, 1.2]]; let z:R^2x2, z = 0; cout << "u = " << u << "\n"; cout << "z = " << z << "\n"; @@ -925,12 +926,12 @@ are sorted by type of left hand side variable. | ~R^3x3~ | | ~0~ (special value) | | list of 9 scalar (~B~, ~N~, ~Z~ or ~R~) expressions | - An example of initialization using a list is + An example of initialization is #+NAME: affectation-to-R3x3-from-list #+BEGIN_SRC pugs :exports both :results output - let u:R^3x3, u = (-3, 2.5, 1E-2, - 2, 1.7, -2, - 1.2, 4, 2.3); + let u:R^3x3, u = [[ -3, 2.5, 1E-2], + [ 2, 1.7, -2], + [1.2, 4, 2.3]]; let z:R^3x3, z = 0; cout << "u = " << u << "\n"; cout << "z = " << z << "\n"; @@ -1256,8 +1257,8 @@ constructions. operators. Their syntax is the following. #+NAME: Rd-Rdxd-access-operator #+BEGIN_SRC pugs :exports both :results output - let x:R^2, x = (1,2); - let A:R^3x3, A = (1,2,3,4,5,6,7,8,9); + let x:R^2, x = [1,2]; + let A:R^3x3, A = [[1,2,3],[4,5,6],[7,8,9]]; cout << "x[0] = " << x[0] << "\nx[1] = " << x[1] << "\n"; cout << "A[0,0] = " << A[0,0] << "\nA[2,1] = " << A[2,1] << "\n"; @@ -1614,9 +1615,9 @@ illustrate this, let us consider the following example. #+BEGIN_SRC pugs :exports both import mesh; - let m1:mesh, m1 = cartesian2dMesh(0, (1,1), (10,10)); + let m1:mesh, m1 = cartesian2dMesh(0, [1,1], (10,10)); let m2:mesh, m2 = m1; - let m3:mesh, m3 = cartesian2dMesh(0, (1,1), (10,10)); + let m3:mesh, m3 = cartesian2dMesh(0, [1,1], (10,10)); m3 = m1; #+END_SRC @@ -1653,8 +1654,8 @@ Let us provide an example to fix ideas. #+NAME: compound-declaration #+BEGIN_SRC pugs :exports both :results output let (A,x,n): R^2x2*R^3*N; - A = (1,2,3,4); - x = (2,4,6); + A = [[1,2],[3,4]]; + x = [2,4,6]; n = 2; cout << "A = " << A << "\nx = " << x << "\nn = " << n << "\n"; @@ -1676,7 +1677,7 @@ different variables. One can also use the following definition instruction #+NAME: compound-definition #+BEGIN_SRC pugs :exports both :results output - let (A,x,n): R^2x2*R^3*N, (A,x,n) = ((1,2,3,4), (2,4,6), 2); + let (A,x,n): R^2x2*R^3*N, (A,x,n) = ([[1,2],[3,4]], [2,4,6], 2); cout << "A = " << A << "\nx = " << x << "\nn = " << n << "\n"; #+END_SRC @@ -1721,7 +1722,7 @@ example. let x: R^3; let n: N; - (A,x,n) = ((1,2,3,4), (2,4,6), 2); + (A,x,n) = ([[1,2],[3,4]], [2,4,6], 2); cout << "A = " << A << "\nx = " << x << "\nn = " << n << "\n"; #+END_SRC @@ -1772,7 +1773,7 @@ Executing this code, one gets The definition syntax is also possible. #+NAME: tuple-definition #+BEGIN_SRC pugs :exports both :results output - let x:(R^2), x = ((1,2),(3.4,2), 0, (2,3)); + let x:(R^2), x = ([1,2],[3.4,2], 0, [2,3]); cout << x << "\n"; #+END_SRC This code gives @@ -2130,17 +2131,17 @@ Using compound types as input and output, one can write let f : R^2x2*R*string -> R*string*R^3x3, (A,x,s) -> (x*A[0,0]*A[1,1]-A[1,0], A+","+x+","+s, - (A[0,0], A[0,1], 0, - A[1,0], A[1,1], 0, - 0, 0, x)); + [[A[0,0], A[0,1], 0], + [A[1,0], A[1,1], 0], + [ 0, 0, x]]); let x : R, x=0; let s : string, s= ""; let A : R^3x3, A = 0; - (x,s,A) = f((1,2,3,4), 2.3, "foo"); + (x,s,A) = f([[1,2],[3,4]], 2.3, "foo"); cout << "x = " << x << "\ns = " << s << "\nA = " << A << "\n"; - let (y,t,A2):R*string*R^3x3, (y,t,A2) = f((3,1,4,2), -5.2, "bar"); + let (y,t,A2):R*string*R^3x3, (y,t,A2) = f([[3,1],[4,2]], -5.2, "bar"); cout << "y = " << y << "\nt = " << t << "\nA2 = " << A2 << "\n"; @@ -2201,7 +2202,7 @@ function expressions. let minus: R -> R, x -> -(x<0)*x; let pm : R -> R*R, x -> (plus(x), minus(x)); - let toR2: R*R -> R^2, (x,y) -> (x,y); + let toR2: R*R -> R^2, (x,y) -> [x,y]; cout << "pm(2) = " << toR2(pm(2)) << " pm(-3) = " << toR2(pm(-3)) << "\n"; #+END_SRC