retrieve dof and entities of assembled matrix entries
Dear Firedrakers, I wonder how to retrieve the dof and support entities of the entries of an assembled matrix. To make it clearer, let's say I consider a simple elasticity problem that I discretize with P2 elements. I would like to know which nodes and degrees of freedom the values of the assembly matrix refer to. Best regards, Nicolas
Hi Nicolas, If what you want is their physical locations then you can create a P2 VectorFunctionSpace and interpolate the mesh coordinates into it. This will give you the physical locations of the P2 point evaluation nodes in the same order they are used in the assembled matrix. Cheers, David From: <firedrake-bounces@imperial.ac.uk> on behalf of Karin&NiKo <niko.karin@gmail.com> Date: Tuesday, 25 August 2020 at 13:02 To: firedrake <firedrake@imperial.ac.uk> Subject: [firedrake] retrieve dof and entities of assembled matrix entries Dear Firedrakers, I wonder how to retrieve the dof and support entities of the entries of an assembled matrix. To make it clearer, let's say I consider a simple elasticity problem that I discretize with P2 elements. I would like to know which nodes and degrees of freedom the values of the assembly matrix refer to. Best regards, Nicolas
Hi David, Thank you for your super-fast answer! I then have another question. In fact, I consider a coupled poro-elasticity problem. I have 2 VectorFunctionSpaces, one which is P2 for the displacements, call it U, and one which is P1 for the fluid pressure, call it P. I do not see how to interpolate the mesh coordinates into it. Do I simply define a VectorFunctionSpace of the product space and interpolate the mesh coordinates into it? Best regards, Nicolas Le mar. 25 août 2020 à 14:06, Ham, David A <david.ham@imperial.ac.uk> a écrit :
Hi Nicolas,
If what you want is their physical locations then you can create a P2 VectorFunctionSpace and interpolate the mesh coordinates into it. This will give you the physical locations of the P2 point evaluation nodes in the same order they are used in the assembled matrix.
Cheers,
David
*From: *<firedrake-bounces@imperial.ac.uk> on behalf of Karin&NiKo < niko.karin@gmail.com> *Date: *Tuesday, 25 August 2020 at 13:02 *To: *firedrake <firedrake@imperial.ac.uk> *Subject: *[firedrake] retrieve dof and entities of assembled matrix entries
Dear Firedrakers,
I wonder how to retrieve the dof and support entities of the entries of an assembled matrix. To make it clearer, let's say I consider a simple elasticity problem that I discretize with P2 elements. I would like to know which nodes and degrees of freedom the values of the assembly matrix refer to.
Best regards,
Nicolas
Hi Nicolas, The composition is the other way up, you have to make the VectorFunctionSpaces for P2 and P1, and then take the product of these: fs = VectorFunctionSpace(mesh, “CG”, 2) * VectorFunctionSpace(mesh, “CG”, 1) f = Function(fs) for fn in f.split(): fn.interpolate(mesh.coordinate) From: Karin&NiKo <niko.karin@gmail.com> Date: Tuesday, 25 August 2020 at 13:44 To: "Ham, David A" <david.ham@imperial.ac.uk> Cc: firedrake <firedrake@imperial.ac.uk> Subject: Re: [firedrake] retrieve dof and entities of assembled matrix entries Hi David, Thank you for your super-fast answer! I then have another question. In fact, I consider a coupled poro-elasticity problem. I have 2 VectorFunctionSpaces, one which is P2 for the displacements, call it U, and one which is P1 for the fluid pressure, call it P. I do not see how to interpolate the mesh coordinates into it. Do I simply define a VectorFunctionSpace of the product space and interpolate the mesh coordinates into it? Best regards, Nicolas Le mar. 25 août 2020 à 14:06, Ham, David A <david.ham@imperial.ac.uk<mailto:david.ham@imperial.ac.uk>> a écrit : Hi Nicolas, If what you want is their physical locations then you can create a P2 VectorFunctionSpace and interpolate the mesh coordinates into it. This will give you the physical locations of the P2 point evaluation nodes in the same order they are used in the assembled matrix. Cheers, David From: <firedrake-bounces@imperial.ac.uk<mailto:firedrake-bounces@imperial.ac.uk>> on behalf of Karin&NiKo <niko.karin@gmail.com<mailto:niko.karin@gmail.com>> Date: Tuesday, 25 August 2020 at 13:02 To: firedrake <firedrake@imperial.ac.uk<mailto:firedrake@imperial.ac.uk>> Subject: [firedrake] retrieve dof and entities of assembled matrix entries Dear Firedrakers, I wonder how to retrieve the dof and support entities of the entries of an assembled matrix. To make it clearer, let's say I consider a simple elasticity problem that I discretize with P2 elements. I would like to know which nodes and degrees of freedom the values of the assembly matrix refer to. Best regards, Nicolas
I feel sorry to bother you again but something is going wrong. Here is my script : from firedrake import * nbx = 1 nby = 1 lx = 0.5 ly = 0.5 mesh = RectangleMesh(nbx, nby, lx, ly, quadrilateral=False) Vu = VectorFunctionSpace(mesh, "Lagrange", 2) Vp = FunctionSpace(mesh, "Lagrange", 1) Vt = FunctionSpace(mesh, "Lagrange", 1) Z = Vu * Vp * Vt dof_coord = Function(Z) for fn in dof_coord.split(): fn.interpolate(mesh.coordinates) It fails with : Traceback (most recent call last): File "<stdin>", line 2, in <module> File "/home/B07947/dev/Firedrake/firedrake/src/firedrake/firedrake/function.py", line 349, in interpolate return interpolation.interpolate(expression, self, subset=subset) File "/home/B07947/dev/Firedrake/firedrake/src/firedrake/firedrake/interpolation.py", line 34, in interpolate return Interpolator(expr, V, subset=subset, access=access).interpolate() File "/home/B07947/dev/Firedrake/firedrake/src/firedrake/firedrake/interpolation.py", line 54, in __init__ self.callable, arguments = make_interpolator(expr, V, subset, access) File "/home/B07947/dev/Firedrake/firedrake/src/firedrake/firedrake/interpolation.py", line 153, in make_interpolator % (sum(dims), numpy.prod(expr.ufl_shape, dtype=int))) RuntimeError: Expression of length 1 required, got length 2 Le mar. 25 août 2020 à 15:02, Ham, David A <david.ham@imperial.ac.uk> a écrit :
Hi Nicolas,
The composition is the other way up, you have to make the VectorFunctionSpaces for P2 and P1, and then take the product of these:
fs = VectorFunctionSpace(mesh, “CG”, 2) * VectorFunctionSpace(mesh, “CG”, 1)
f = Function(fs)
for fn in f.split():
fn.interpolate(mesh.coordinate)
*From: *Karin&NiKo <niko.karin@gmail.com> *Date: *Tuesday, 25 August 2020 at 13:44 *To: *"Ham, David A" <david.ham@imperial.ac.uk> *Cc: *firedrake <firedrake@imperial.ac.uk> *Subject: *Re: [firedrake] retrieve dof and entities of assembled matrix entries
Hi David,
Thank you for your super-fast answer! I then have another question. In fact, I consider a coupled poro-elasticity problem. I have 2 VectorFunctionSpaces, one which is P2 for the displacements, call it U, and one which is P1 for the fluid pressure, call it P. I do not see how to interpolate the mesh coordinates into it. Do I simply define a VectorFunctionSpace of the product space and interpolate the mesh coordinates into it?
Best regards,
Nicolas
Le mar. 25 août 2020 à 14:06, Ham, David A <david.ham@imperial.ac.uk> a écrit :
Hi Nicolas,
If what you want is their physical locations then you can create a P2 VectorFunctionSpace and interpolate the mesh coordinates into it. This will give you the physical locations of the P2 point evaluation nodes in the same order they are used in the assembled matrix.
Cheers,
David
*From: *<firedrake-bounces@imperial.ac.uk> on behalf of Karin&NiKo < niko.karin@gmail.com> *Date: *Tuesday, 25 August 2020 at 13:02 *To: *firedrake <firedrake@imperial.ac.uk> *Subject: *[firedrake] retrieve dof and entities of assembled matrix entries
Dear Firedrakers,
I wonder how to retrieve the dof and support entities of the entries of an assembled matrix. To make it clearer, let's say I consider a simple elasticity problem that I discretize with P2 elements. I would like to know which nodes and degrees of freedom the values of the assembly matrix refer to.
Best regards,
Nicolas
On 25 Aug 2020, at 14:31, Karin&NiKo <niko.karin@gmail.com> wrote:
I feel sorry to bother you again but something is going wrong. Here is my script :
from firedrake import *
nbx = 1 nby = 1 lx = 0.5 ly = 0.5 mesh = RectangleMesh(nbx, nby, lx, ly, quadrilateral=False)
Vu = VectorFunctionSpace(mesh, "Lagrange", 2) Vp = FunctionSpace(mesh, "Lagrange", 1) Vt = FunctionSpace(mesh, "Lagrange", 1) Z = Vu * Vp * Vt
dof_coord = Function(Z) for fn in dof_coord.split(): fn.interpolate(mesh.coordinates)
The mesh.coordinates function is in a vector space, and Vp and Vt are both scalar spaces, so you can't interpolate from one into the other. Lawrence
Of course! So I can interpolate the mesh coordinates into the vector space. Then I have to know how the degrees of freedom are numbered, haven't I? Is it : [n0_u0, n0_u1, n0_u2, n0_p, n0_t, n1_u0, n1_u1, n1_u2, n1_p, n1_t, ...] or [n0_u0, n1_u0, n2_u0, ....., n0_u1, n1_u1, n2_u1, ...., n0_u2, n1_u2, ....] , n stands for a "node", ui for the i-th component of the vector space Vu, p for the Vp DOF and t for the Vt DOF ? Nicolas Le mar. 25 août 2020 à 15:34, Lawrence Mitchell <wence@gmx.li> a écrit :
On 25 Aug 2020, at 14:31, Karin&NiKo <niko.karin@gmail.com> wrote:
I feel sorry to bother you again but something is going wrong. Here is my script :
from firedrake import *
nbx = 1 nby = 1 lx = 0.5 ly = 0.5 mesh = RectangleMesh(nbx, nby, lx, ly, quadrilateral=False)
Vu = VectorFunctionSpace(mesh, "Lagrange", 2) Vp = FunctionSpace(mesh, "Lagrange", 1) Vt = FunctionSpace(mesh, "Lagrange", 1) Z = Vu * Vp * Vt
dof_coord = Function(Z) for fn in dof_coord.split(): fn.interpolate(mesh.coordinates)
The mesh.coordinates function is in a vector space, and Vp and Vt are both scalar spaces, so you can't interpolate from one into the other.
Lawrence
On Tue, Aug 25, 2020 at 10:01 AM Karin&NiKo <niko.karin@gmail.com> wrote:
Of course! So I can interpolate the mesh coordinates into the vector space. Then I have to know how the degrees of freedom are numbered, haven't I? Is it : [n0_u0, n0_u1, n0_u2, n0_p, n0_t, n1_u0, n1_u1, n1_u2, n1_p, n1_t, ...] or [n0_u0, n1_u0, n2_u0, ....., n0_u1, n1_u1, n2_u1, ...., n0_u2, n1_u2, ....] , n stands for a "node", ui for the i-th component of the vector space Vu, p for the Vp DOF and t for the Vt DOF ?
Hi Nicolas, What are you trying to do overall? Thanks, Matt
Nicolas
Le mar. 25 août 2020 à 15:34, Lawrence Mitchell <wence@gmx.li> a écrit :
On 25 Aug 2020, at 14:31, Karin&NiKo <niko.karin@gmail.com> wrote:
I feel sorry to bother you again but something is going wrong. Here is my script :
from firedrake import *
nbx = 1 nby = 1 lx = 0.5 ly = 0.5 mesh = RectangleMesh(nbx, nby, lx, ly, quadrilateral=False)
Vu = VectorFunctionSpace(mesh, "Lagrange", 2) Vp = FunctionSpace(mesh, "Lagrange", 1) Vt = FunctionSpace(mesh, "Lagrange", 1) Z = Vu * Vp * Vt
dof_coord = Function(Z) for fn in dof_coord.split(): fn.interpolate(mesh.coordinates)
The mesh.coordinates function is in a vector space, and Vp and Vt are both scalar spaces, so you can't interpolate from one into the other.
Lawrence
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
Hi Matthew, I wonder how to retrieve the dof and support entities of the entries of an assembled matrix. To make it clearer, let's say I consider a coupled thermo poro elasticity problem that I discretize with Lagrange P2 elements for the displacement, Lagrange P1 for the pressure and Lagrange P1 for the temperature. I would like to know which nodes and degrees of freedom the values of the assembly matrix refer to. Nicolas Le mar. 25 août 2020 à 16:03, Matthew Knepley <knepley@gmail.com> a écrit :
On Tue, Aug 25, 2020 at 10:01 AM Karin&NiKo <niko.karin@gmail.com> wrote:
Of course! So I can interpolate the mesh coordinates into the vector space. Then I have to know how the degrees of freedom are numbered, haven't I? Is it : [n0_u0, n0_u1, n0_u2, n0_p, n0_t, n1_u0, n1_u1, n1_u2, n1_p, n1_t, ...] or [n0_u0, n1_u0, n2_u0, ....., n0_u1, n1_u1, n2_u1, ...., n0_u2, n1_u2, ....] , n stands for a "node", ui for the i-th component of the vector space Vu, p for the Vp DOF and t for the Vt DOF ?
Hi Nicolas,
What are you trying to do overall?
Thanks,
Matt
Nicolas
Le mar. 25 août 2020 à 15:34, Lawrence Mitchell <wence@gmx.li> a écrit :
On 25 Aug 2020, at 14:31, Karin&NiKo <niko.karin@gmail.com> wrote:
I feel sorry to bother you again but something is going wrong. Here is my script :
from firedrake import *
nbx = 1 nby = 1 lx = 0.5 ly = 0.5 mesh = RectangleMesh(nbx, nby, lx, ly, quadrilateral=False)
Vu = VectorFunctionSpace(mesh, "Lagrange", 2) Vp = FunctionSpace(mesh, "Lagrange", 1) Vt = FunctionSpace(mesh, "Lagrange", 1) Z = Vu * Vp * Vt
dof_coord = Function(Z) for fn in dof_coord.split(): fn.interpolate(mesh.coordinates)
The mesh.coordinates function is in a vector space, and Vp and Vt are both scalar spaces, so you can't interpolate from one into the other.
Lawrence
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
On Tue, Aug 25, 2020 at 10:17 AM Karin&NiKo <niko.karin@gmail.com> wrote:
Hi Matthew,
I wonder how to retrieve the dof and support entities of the entries of an assembled matrix. To make it clearer, let's say I consider a coupled thermo poro elasticity problem that I discretize with Lagrange P2 elements for the displacement, Lagrange P1 for the pressure and Lagrange P1 for the temperature. I would like to know which nodes and degrees of freedom the values of the assembly matrix refer to.
I read that. I mean what is the endgame? Also note that I think this information is in the Section for the DM. I am not sure how to extract the Section. Thanks, Matt
Nicolas
Le mar. 25 août 2020 à 16:03, Matthew Knepley <knepley@gmail.com> a écrit :
On Tue, Aug 25, 2020 at 10:01 AM Karin&NiKo <niko.karin@gmail.com> wrote:
Of course! So I can interpolate the mesh coordinates into the vector space. Then I have to know how the degrees of freedom are numbered, haven't I? Is it : [n0_u0, n0_u1, n0_u2, n0_p, n0_t, n1_u0, n1_u1, n1_u2, n1_p, n1_t, ...] or [n0_u0, n1_u0, n2_u0, ....., n0_u1, n1_u1, n2_u1, ...., n0_u2, n1_u2, ....] , n stands for a "node", ui for the i-th component of the vector space Vu, p for the Vp DOF and t for the Vt DOF ?
Hi Nicolas,
What are you trying to do overall?
Thanks,
Matt
Nicolas
Le mar. 25 août 2020 à 15:34, Lawrence Mitchell <wence@gmx.li> a écrit :
On 25 Aug 2020, at 14:31, Karin&NiKo <niko.karin@gmail.com> wrote:
I feel sorry to bother you again but something is going wrong. Here is my script :
from firedrake import *
nbx = 1 nby = 1 lx = 0.5 ly = 0.5 mesh = RectangleMesh(nbx, nby, lx, ly, quadrilateral=False)
Vu = VectorFunctionSpace(mesh, "Lagrange", 2) Vp = FunctionSpace(mesh, "Lagrange", 1) Vt = FunctionSpace(mesh, "Lagrange", 1) Z = Vu * Vp * Vt
dof_coord = Function(Z) for fn in dof_coord.split(): fn.interpolate(mesh.coordinates)
The mesh.coordinates function is in a vector space, and Vp and Vt are both scalar spaces, so you can't interpolate from one into the other.
Lawrence
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
Ho sorry. I am trying to reproduce in firedrake a formulation implemented in a (huge) Fortran 77 (aka unreadable) code. I have small differences in the assembly matrix and I would like to identify precisely which terms are concerned in the formulation. Le mar. 25 août 2020 à 16:21, Matthew Knepley <knepley@gmail.com> a écrit :
On Tue, Aug 25, 2020 at 10:17 AM Karin&NiKo <niko.karin@gmail.com> wrote:
Hi Matthew,
I wonder how to retrieve the dof and support entities of the entries of an assembled matrix. To make it clearer, let's say I consider a coupled thermo poro elasticity problem that I discretize with Lagrange P2 elements for the displacement, Lagrange P1 for the pressure and Lagrange P1 for the temperature. I would like to know which nodes and degrees of freedom the values of the assembly matrix refer to.
I read that. I mean what is the endgame?
Also note that I think this information is in the Section for the DM. I am not sure how to extract the Section.
Thanks,
Matt
Nicolas
Le mar. 25 août 2020 à 16:03, Matthew Knepley <knepley@gmail.com> a écrit :
On Tue, Aug 25, 2020 at 10:01 AM Karin&NiKo <niko.karin@gmail.com> wrote:
Of course! So I can interpolate the mesh coordinates into the vector space. Then I have to know how the degrees of freedom are numbered, haven't I? Is it : [n0_u0, n0_u1, n0_u2, n0_p, n0_t, n1_u0, n1_u1, n1_u2, n1_p, n1_t, ...] or [n0_u0, n1_u0, n2_u0, ....., n0_u1, n1_u1, n2_u1, ...., n0_u2, n1_u2, ....] , n stands for a "node", ui for the i-th component of the vector space Vu, p for the Vp DOF and t for the Vt DOF ?
Hi Nicolas,
What are you trying to do overall?
Thanks,
Matt
Nicolas
Le mar. 25 août 2020 à 15:34, Lawrence Mitchell <wence@gmx.li> a écrit :
On 25 Aug 2020, at 14:31, Karin&NiKo <niko.karin@gmail.com> wrote:
I feel sorry to bother you again but something is going wrong. Here is my script :
from firedrake import *
nbx = 1 nby = 1 lx = 0.5 ly = 0.5 mesh = RectangleMesh(nbx, nby, lx, ly, quadrilateral=False)
Vu = VectorFunctionSpace(mesh, "Lagrange", 2) Vp = FunctionSpace(mesh, "Lagrange", 1) Vt = FunctionSpace(mesh, "Lagrange", 1) Z = Vu * Vp * Vt
dof_coord = Function(Z) for fn in dof_coord.split(): fn.interpolate(mesh.coordinates)
The mesh.coordinates function is in a vector space, and Vp and Vt are both scalar spaces, so you can't interpolate from one into the other.
Lawrence
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
Dear all, I am still fighting with the unknowns numbering. Could you please provide me with further ideas in order to build the link between the terms of an assembly matrix and the supporting entities and degrees of freedom? Matt mentioned that the section of the underlying DM could contain this information but I do not know how to extract. Sorry for the noise. NIcolas Le mar. 25 août 2020 à 16:28, Karin&NiKo <niko.karin@gmail.com> a écrit :
Ho sorry. I am trying to reproduce in firedrake a formulation implemented in a (huge) Fortran 77 (aka unreadable) code. I have small differences in the assembly matrix and I would like to identify precisely which terms are concerned in the formulation.
Le mar. 25 août 2020 à 16:21, Matthew Knepley <knepley@gmail.com> a écrit :
On Tue, Aug 25, 2020 at 10:17 AM Karin&NiKo <niko.karin@gmail.com> wrote:
Hi Matthew,
I wonder how to retrieve the dof and support entities of the entries of an assembled matrix. To make it clearer, let's say I consider a coupled thermo poro elasticity problem that I discretize with Lagrange P2 elements for the displacement, Lagrange P1 for the pressure and Lagrange P1 for the temperature. I would like to know which nodes and degrees of freedom the values of the assembly matrix refer to.
I read that. I mean what is the endgame?
Also note that I think this information is in the Section for the DM. I am not sure how to extract the Section.
Thanks,
Matt
Nicolas
Le mar. 25 août 2020 à 16:03, Matthew Knepley <knepley@gmail.com> a écrit :
On Tue, Aug 25, 2020 at 10:01 AM Karin&NiKo <niko.karin@gmail.com> wrote:
Of course! So I can interpolate the mesh coordinates into the vector space. Then I have to know how the degrees of freedom are numbered, haven't I? Is it : [n0_u0, n0_u1, n0_u2, n0_p, n0_t, n1_u0, n1_u1, n1_u2, n1_p, n1_t, ...] or [n0_u0, n1_u0, n2_u0, ....., n0_u1, n1_u1, n2_u1, ...., n0_u2, n1_u2, ....] , n stands for a "node", ui for the i-th component of the vector space Vu, p for the Vp DOF and t for the Vt DOF ?
Hi Nicolas,
What are you trying to do overall?
Thanks,
Matt
Nicolas
Le mar. 25 août 2020 à 15:34, Lawrence Mitchell <wence@gmx.li> a écrit :
> On 25 Aug 2020, at 14:31, Karin&NiKo <niko.karin@gmail.com> wrote: > > I feel sorry to bother you again but something is going wrong. Here is my script : > > from firedrake import * > > nbx = 1 > nby = 1 > lx = 0.5 > ly = 0.5 > mesh = RectangleMesh(nbx, nby, lx, ly, quadrilateral=False) > > Vu = VectorFunctionSpace(mesh, "Lagrange", 2) > Vp = FunctionSpace(mesh, "Lagrange", 1) > Vt = FunctionSpace(mesh, "Lagrange", 1) > Z = Vu * Vp * Vt > > dof_coord = Function(Z) > for fn in dof_coord.split(): > fn.interpolate(mesh.coordinates)
The mesh.coordinates function is in a vector space, and Vp and Vt are both scalar spaces, so you can't interpolate from one into the other.
Lawrence
_______________________________________________ firedrake mailing list firedrake@imperial.ac.uk https://mailman.ic.ac.uk/mailman/listinfo/firedrake
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
participants (4)
- 
                
                Ham, David A
- 
                
                Karin&NiKo
- 
                
                Lawrence Mitchell
- 
                
                Matthew Knepley