You can subscribe to this list here.
2003 
_{Jan}

_{Feb}

_{Mar}

_{Apr}

_{May}

_{Jun}

_{Jul}

_{Aug}

_{Sep}
(2) 
_{Oct}
(2) 
_{Nov}
(27) 
_{Dec}
(31) 

2004 
_{Jan}
(6) 
_{Feb}
(15) 
_{Mar}
(33) 
_{Apr}
(10) 
_{May}
(46) 
_{Jun}
(11) 
_{Jul}
(21) 
_{Aug}
(15) 
_{Sep}
(13) 
_{Oct}
(23) 
_{Nov}
(1) 
_{Dec}
(8) 
2005 
_{Jan}
(27) 
_{Feb}
(57) 
_{Mar}
(86) 
_{Apr}
(23) 
_{May}
(37) 
_{Jun}
(34) 
_{Jul}
(24) 
_{Aug}
(17) 
_{Sep}
(50) 
_{Oct}
(24) 
_{Nov}
(10) 
_{Dec}
(60) 
2006 
_{Jan}
(47) 
_{Feb}
(46) 
_{Mar}
(127) 
_{Apr}
(19) 
_{May}
(26) 
_{Jun}
(62) 
_{Jul}
(47) 
_{Aug}
(51) 
_{Sep}
(61) 
_{Oct}
(42) 
_{Nov}
(50) 
_{Dec}
(33) 
2007 
_{Jan}
(60) 
_{Feb}
(55) 
_{Mar}
(77) 
_{Apr}
(102) 
_{May}
(82) 
_{Jun}
(102) 
_{Jul}
(169) 
_{Aug}
(117) 
_{Sep}
(80) 
_{Oct}
(37) 
_{Nov}
(51) 
_{Dec}
(43) 
2008 
_{Jan}
(71) 
_{Feb}
(94) 
_{Mar}
(98) 
_{Apr}
(125) 
_{May}
(54) 
_{Jun}
(119) 
_{Jul}
(60) 
_{Aug}
(111) 
_{Sep}
(118) 
_{Oct}
(125) 
_{Nov}
(119) 
_{Dec}
(94) 
2009 
_{Jan}
(109) 
_{Feb}
(38) 
_{Mar}
(93) 
_{Apr}
(88) 
_{May}
(29) 
_{Jun}
(57) 
_{Jul}
(53) 
_{Aug}
(48) 
_{Sep}
(68) 
_{Oct}
(151) 
_{Nov}
(23) 
_{Dec}
(35) 
2010 
_{Jan}
(84) 
_{Feb}
(60) 
_{Mar}
(184) 
_{Apr}
(112) 
_{May}
(60) 
_{Jun}
(90) 
_{Jul}
(23) 
_{Aug}
(70) 
_{Sep}
(119) 
_{Oct}
(27) 
_{Nov}
(47) 
_{Dec}
(54) 
2011 
_{Jan}
(22) 
_{Feb}
(19) 
_{Mar}
(92) 
_{Apr}
(93) 
_{May}
(35) 
_{Jun}
(91) 
_{Jul}
(32) 
_{Aug}
(61) 
_{Sep}
(7) 
_{Oct}
(69) 
_{Nov}
(81) 
_{Dec}
(23) 
2012 
_{Jan}
(64) 
_{Feb}
(95) 
_{Mar}
(35) 
_{Apr}
(36) 
_{May}
(63) 
_{Jun}
(98) 
_{Jul}
(70) 
_{Aug}
(171) 
_{Sep}
(149) 
_{Oct}
(64) 
_{Nov}
(67) 
_{Dec}
(126) 
2013 
_{Jan}
(108) 
_{Feb}
(104) 
_{Mar}
(171) 
_{Apr}
(133) 
_{May}
(108) 
_{Jun}
(100) 
_{Jul}
(93) 
_{Aug}
(126) 
_{Sep}
(74) 
_{Oct}
(59) 
_{Nov}
(145) 
_{Dec}
(93) 
2014 
_{Jan}
(38) 
_{Feb}
(45) 
_{Mar}
(26) 
_{Apr}
(41) 
_{May}
(125) 
_{Jun}
(70) 
_{Jul}
(61) 
_{Aug}
(66) 
_{Sep}
(60) 
_{Oct}
(110) 
_{Nov}
(27) 
_{Dec}
(30) 
2015 
_{Jan}
(43) 
_{Feb}
(67) 
_{Mar}
(71) 
_{Apr}
(92) 
_{May}
(39) 
_{Jun}
(15) 
_{Jul}
(46) 
_{Aug}
(63) 
_{Sep}
(84) 
_{Oct}
(82) 
_{Nov}
(69) 
_{Dec}
(45) 
2016 
_{Jan}
(92) 
_{Feb}
(91) 
_{Mar}
(148) 
_{Apr}
(43) 
_{May}
(58) 
_{Jun}
(117) 
_{Jul}
(92) 
_{Aug}
(140) 
_{Sep}
(49) 
_{Oct}
(33) 
_{Nov}
(85) 
_{Dec}
(40) 
2017 
_{Jan}
(41) 
_{Feb}
(36) 
_{Mar}
(49) 
_{Apr}
(41) 
_{May}
(73) 
_{Jun}
(51) 
_{Jul}
(12) 
_{Aug}
(69) 
_{Sep}
(26) 
_{Oct}
(43) 
_{Nov}
(75) 
_{Dec}
(13) 
From: Derek Gaston <friedmud@gm...>  20080612 20:46:39

Note that we don't have a matrix to condense in our matrix free scheme ;) I ultimately think that we're going to use a BoundaryMesh to do this... we'll just loop over the nodes in the boundary mesh and set their residual as a postprocessing step.... and avoid all of these problems (including the triangle/tet problem). Derek On Thu, Jun 12, 2008 at 2:24 PM, Benjamin Kirk <benjamin.kirk@...> wrote: > Many, many ages ago we did Lagrange BCs ('cus there weren't any other types > of elements yet!) strongly. The trick is to do it at the element > matrix/vector level before inserting into the global matrix. > > There is actually a member function in DenseMatrix to do this: > > Ke.condense(i,j,val,Fe); > > is what you want. This will impose val strongly by doing the right thing at > the element level. Of course you can add these and instead of getting > > val=foo > > at the linear system level you get > > N*val = N*foo > > > There is another, important issue though that John learned via suboptimal > convergence on triangular meshes... Usually we only concern ourselves with > BCs on elements whose sides intersect the boundary, e.g. NULL neighbors... > If you are going to impose the value strongly through the element matrix > approach you have to do it for all elements which touch the DOF. > > > Finally, you can effectively accomplish the same thing with penalty using > add() instead of set(), just add 1e30 to the global matrix diagonal and > 1e30*value to the RHS, all the other entries will "go away" in floating > point. > > Ben > > > > On 6/12/08 3:12 PM, "Derek Gaston" <friedmud@...> wrote: > >> It's kind of hard to see how to go from dofs_on_side back to the >> mapping to Re()... you have to know what "node number" those dofs map >> to for the current element. Or am I missing something? >> >> Derek >> >> On Thu, Jun 12, 2008 at 2:08 PM, Roy Stogner <roy@...> wrote: >>> >>> On Thu, 12 Jun 2008, Derek Gaston wrote: >>> >>>> Of course putting all my thoughts together in an email made me realize >>>> what I needed to do... all I need to do is use the usual side >>>> assembly... and call elem>is_node_on_side(i,side)... and if it is >>>> then that dof is on the side... then I can just set >>>> Re(i)=soln(dof_indices[i])bc_value like I want to... overriding >>>> whatever values were assembled into Re before I ever add it into the >>>> residual... >>> >>> This looks good, but you might find it easier in the long run to use >>> FE::dofs_on_side() rather than Elem::is_node_on_side; the latter might >>> make it too easy to write code that only works on isoparametric >>> Lagrange elements. >>>  >>> Roy >>> >> >>  >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> Libmeshusers mailing list >> Libmeshusers@... >> https://lists.sourceforge.net/lists/listinfo/libmeshusers > > 
From: Roy Stogner <roy@st...>  20080612 20:33:06

On Thu, 12 Jun 2008, Roy Stogner wrote: > On Thu, 12 Jun 2008, Derek Gaston wrote: > >> It's kind of hard to see how to go from dofs_on_side back to the >> mapping to Re()... you have to know what "node number" those dofs map >> to for the current element. Or am I missing something? > > IIRC dofs_on_side gives you local dof numbers; you still need the > result of a dof_indices call to look up the corresponding global dof > indices. Oh, and to really be general this implies that your residual terms aren't just the pointwise difference between current value and desired value at node i, they're the sum of the side integral of the difference between current and desired values weighted by test function i. So basically you still evaluate those integrals, but you use the dofs_on_side information to decide which test functions to skip.  Roy 
From: Benjamin Kirk <benjamin.kirk@na...>  20080612 20:25:04

Many, many ages ago we did Lagrange BCs ('cus there weren't any other types of elements yet!) strongly. The trick is to do it at the element matrix/vector level before inserting into the global matrix. There is actually a member function in DenseMatrix to do this: Ke.condense(i,j,val,Fe); is what you want. This will impose val strongly by doing the right thing at the element level. Of course you can add these and instead of getting val=foo at the linear system level you get N*val = N*foo There is another, important issue though that John learned via suboptimal convergence on triangular meshes... Usually we only concern ourselves with BCs on elements whose sides intersect the boundary, e.g. NULL neighbors... If you are going to impose the value strongly through the element matrix approach you have to do it for all elements which touch the DOF. Finally, you can effectively accomplish the same thing with penalty using add() instead of set(), just add 1e30 to the global matrix diagonal and 1e30*value to the RHS, all the other entries will "go away" in floating point. Ben On 6/12/08 3:12 PM, "Derek Gaston" <friedmud@...> wrote: > It's kind of hard to see how to go from dofs_on_side back to the > mapping to Re()... you have to know what "node number" those dofs map > to for the current element. Or am I missing something? > > Derek > > On Thu, Jun 12, 2008 at 2:08 PM, Roy Stogner <roy@...> wrote: >> >> On Thu, 12 Jun 2008, Derek Gaston wrote: >> >>> Of course putting all my thoughts together in an email made me realize >>> what I needed to do... all I need to do is use the usual side >>> assembly... and call elem>is_node_on_side(i,side)... and if it is >>> then that dof is on the side... then I can just set >>> Re(i)=soln(dof_indices[i])bc_value like I want to... overriding >>> whatever values were assembled into Re before I ever add it into the >>> residual... >> >> This looks good, but you might find it easier in the long run to use >> FE::dofs_on_side() rather than Elem::is_node_on_side; the latter might >> make it too easy to write code that only works on isoparametric >> Lagrange elements. >>  >> Roy >> > >  > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Libmeshusers mailing list > Libmeshusers@... > https://lists.sourceforge.net/lists/listinfo/libmeshusers 
From: John Peterson <jwpeterson@gm...>  20080612 20:22:10

Interesting, I guess because of the fact that I had a fortran compiler in my path, it didn't like the downloadcblaslapack=1 unless I explicitly said withfortran=0 as well. Just FYI for anyone trying to build on a Mac, you can get a Fortran95 compiler in OSX binary form from g95.org J On Thu, Jun 12, 2008 at 3:09 PM, Derek Gaston <friedmud@...> wrote: > Not if you don't specify withfc and you make sure to use > downloadcblaslapack=1 (note the _c_ in the middle of that). > > Derek > > On Thu, Jun 12, 2008 at 2:05 PM, John Peterson <jwpeterson@...> wrote: >> Hey Derek, >> >> I'm curious, without a fortran compiler of any kind, didn't petsc's >> configure script complain with >> >> ================================================================================= >> TESTING: FortranMPICheck >> from config.packages.MPI(python/BuildSystem/config/packages/MPI.py:523) >> >> ********************************************************************************* >> UNABLE to CONFIGURE with GIVEN OPTIONS (see configure.log >> for details): >>  >> Fortran error! mpif.h could not be located at: ['/usr/local/mpi/include'] >> >> Thanks, >> J >> >> On Thu, Jun 12, 2008 at 9:42 AM, Derek Gaston <friedmud@...> wrote: >>> For OSX 10.5.3 here's what I do. >>> >>> 1. Get MPICH1... compile and install into a place in my home directory. >>> 2. Make sure my PATH is set so that the mpicxx/mpicc is the one that >>> I just compiled and installed from MPICH1. >>> 3. Compile PetsC using "./config/configure.py withcc=mpicc  >>> downloadcblaslapack=1". Note the _c_ blaslapack as I haven't >>> taken the time to get a fortran compiler working in OSX. >>> 4. Build PetsC >>> 5. Set PETSC_HOME and PETS_ARCH. >>> 6. Download libMesh and configure with "./configure disable >>> shared". If you do it all right there is no reason to use enable >>> mpi or withmpi. >>> 7. Make libMesh. >>> 8. Enjoy! >>> >>> I'm sure this same sequence will work with MPICH2. The biggest thing >>> is to make sure that mpicc is in your path and to pass that as with >>> cc to PetsC. If you do that (and you set PETSC_HOME and PETSC_ARCH >>> correctly) libMesh will automatically pick up on PetsC and compile >>> with mpi. >>> >>> Derek >>> >>> On Jun 12, 2008, at 1:51 AM, Coulaud Olivier wrote: >>> >>>> Hi, >>>> >>>> I try to install the last version on Mac OS X (10.5.3 and >>>> gcc 4.0) with the following options >>>> >>>> ./configure disabletriangle enablempi withmpi=/opt/mpi/mpich2 >>>> disabletecplot >>>> >>>> But it seems to have some problems when I want shared libraries. >>>> >>>> ... >>>> >>>> Compiling C (in optimized mode) timing.c... >>>> >>>> Compiling C (in optimized mode) util.c... >>>> >>>> Linking /Users/coulaudolivier/MesData/Recherche/DMEF/libmultiscale/ >>>> libmultiscaleexternals/external/libmesh0.6.2/contrib/lib/i686apple >>>> darwin9.3.0_opt/libmetis.dylib >>>> >>>> Undefined symbols: >>>> >>>> "_main", referenced from: >>>> >>>> start in crt1.10.5.o >>>> >>>> ld: symbol(s) not found >>>> >>>> collect2: ld returned 1 exit status >>>> >>>> make[2]: *** [/Users/coulaudolivier/MesData/Recherche/DMEF/ >>>> libmultiscale/libmultiscaleexternals/external/libmesh0.6.2/contrib/ >>>> lib/i686appledarwin9.3.0_opt/libmetis.dylib] Error 1 >>>> >>>> make[1]: *** [all] Error 2 >>>> >>>> make: *** [/Users/coulaudolivier/MesData/Recherche/DMEF/ >>>> libmultiscale/ >>>> libmultiscaleexternals/external/libmesh0.6.2/lib/i686apple >>>> darwin9.3.0_opt/libmesh.dylib] Error 2 >>>> >>>> >>>> >>>> I set in Make.common dynamic rather shared (non supported for mac os >>>> x) but I have the same error. >>>> >>>> >>>> >>>> Any Idea? >>>> >>>> >>>> >>>> Moreover; is it possible to set a verbose mode to the compilation? >>>> >>>> >>>> >>>> Thanks in advance >>>> >>>>  >>>> >>>> >>>> >>>> Olivier Coulaud >>>> >>>> >>>>  >>>> Scalaplix project  INRIA Bordeaux  SudOuest >>>> 351 cours de la libération  F33400 Talence  France >>>> >>>> Tel: [33] (0) 5 24 57 40 80 >>>> WEB: http://www.labri.fr/perso/coulaud/ >>>> Mail: Olivier.Coulaud@... >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>> >>>>  >>>> Check out the new SourceForge.net Marketplace. >>>> It's the best place to buy or sell services for >>>> just about anything Open Source. >>>> http://sourceforge.net/services/buy/index.php >>>> _______________________________________________ >>>> Libmeshusers mailing list >>>> Libmeshusers@... >>>> https://lists.sourceforge.net/lists/listinfo/libmeshusers >>> >>> >>>  >>> Check out the new SourceForge.net Marketplace. >>> It's the best place to buy or sell services for >>> just about anything Open Source. >>> http://sourceforge.net/services/buy/index.php >>> _______________________________________________ >>> Libmeshusers mailing list >>> Libmeshusers@... >>> https://lists.sourceforge.net/lists/listinfo/libmeshusers >>> >> > 
From: Derek Gaston <friedmud@gm...>  20080612 20:12:58

It's kind of hard to see how to go from dofs_on_side back to the mapping to Re()... you have to know what "node number" those dofs map to for the current element. Or am I missing something? Derek On Thu, Jun 12, 2008 at 2:08 PM, Roy Stogner <roy@...> wrote: > > On Thu, 12 Jun 2008, Derek Gaston wrote: > >> Of course putting all my thoughts together in an email made me realize >> what I needed to do... all I need to do is use the usual side >> assembly... and call elem>is_node_on_side(i,side)... and if it is >> then that dof is on the side... then I can just set >> Re(i)=soln(dof_indices[i])bc_value like I want to... overriding >> whatever values were assembled into Re before I ever add it into the >> residual... > > This looks good, but you might find it easier in the long run to use > FE::dofs_on_side() rather than Elem::is_node_on_side; the latter might > make it too easy to write code that only works on isoparametric > Lagrange elements. >  > Roy > 
From: Derek Gaston <friedmud@gm...>  20080612 20:09:10

Not if you don't specify withfc and you make sure to use downloadcblaslapack=1 (note the _c_ in the middle of that). Derek On Thu, Jun 12, 2008 at 2:05 PM, John Peterson <jwpeterson@...> wrote: > Hey Derek, > > I'm curious, without a fortran compiler of any kind, didn't petsc's > configure script complain with > > ================================================================================= > TESTING: FortranMPICheck > from config.packages.MPI(python/BuildSystem/config/packages/MPI.py:523) > > ********************************************************************************* > UNABLE to CONFIGURE with GIVEN OPTIONS (see configure.log > for details): >  > Fortran error! mpif.h could not be located at: ['/usr/local/mpi/include'] > > Thanks, > J > > On Thu, Jun 12, 2008 at 9:42 AM, Derek Gaston <friedmud@...> wrote: >> For OSX 10.5.3 here's what I do. >> >> 1. Get MPICH1... compile and install into a place in my home directory. >> 2. Make sure my PATH is set so that the mpicxx/mpicc is the one that >> I just compiled and installed from MPICH1. >> 3. Compile PetsC using "./config/configure.py withcc=mpicc  >> downloadcblaslapack=1". Note the _c_ blaslapack as I haven't >> taken the time to get a fortran compiler working in OSX. >> 4. Build PetsC >> 5. Set PETSC_HOME and PETS_ARCH. >> 6. Download libMesh and configure with "./configure disable >> shared". If you do it all right there is no reason to use enable >> mpi or withmpi. >> 7. Make libMesh. >> 8. Enjoy! >> >> I'm sure this same sequence will work with MPICH2. The biggest thing >> is to make sure that mpicc is in your path and to pass that as with >> cc to PetsC. If you do that (and you set PETSC_HOME and PETSC_ARCH >> correctly) libMesh will automatically pick up on PetsC and compile >> with mpi. >> >> Derek >> >> On Jun 12, 2008, at 1:51 AM, Coulaud Olivier wrote: >> >>> Hi, >>> >>> I try to install the last version on Mac OS X (10.5.3 and >>> gcc 4.0) with the following options >>> >>> ./configure disabletriangle enablempi withmpi=/opt/mpi/mpich2 >>> disabletecplot >>> >>> But it seems to have some problems when I want shared libraries. >>> >>> ... >>> >>> Compiling C (in optimized mode) timing.c... >>> >>> Compiling C (in optimized mode) util.c... >>> >>> Linking /Users/coulaudolivier/MesData/Recherche/DMEF/libmultiscale/ >>> libmultiscaleexternals/external/libmesh0.6.2/contrib/lib/i686apple >>> darwin9.3.0_opt/libmetis.dylib >>> >>> Undefined symbols: >>> >>> "_main", referenced from: >>> >>> start in crt1.10.5.o >>> >>> ld: symbol(s) not found >>> >>> collect2: ld returned 1 exit status >>> >>> make[2]: *** [/Users/coulaudolivier/MesData/Recherche/DMEF/ >>> libmultiscale/libmultiscaleexternals/external/libmesh0.6.2/contrib/ >>> lib/i686appledarwin9.3.0_opt/libmetis.dylib] Error 1 >>> >>> make[1]: *** [all] Error 2 >>> >>> make: *** [/Users/coulaudolivier/MesData/Recherche/DMEF/ >>> libmultiscale/ >>> libmultiscaleexternals/external/libmesh0.6.2/lib/i686apple >>> darwin9.3.0_opt/libmesh.dylib] Error 2 >>> >>> >>> >>> I set in Make.common dynamic rather shared (non supported for mac os >>> x) but I have the same error. >>> >>> >>> >>> Any Idea? >>> >>> >>> >>> Moreover; is it possible to set a verbose mode to the compilation? >>> >>> >>> >>> Thanks in advance >>> >>>  >>> >>> >>> >>> Olivier Coulaud >>> >>> >>>  >>> Scalaplix project  INRIA Bordeaux  SudOuest >>> 351 cours de la libération  F33400 Talence  France >>> >>> Tel: [33] (0) 5 24 57 40 80 >>> WEB: http://www.labri.fr/perso/coulaud/ >>> Mail: Olivier.Coulaud@... >>> >>> >>> >>> >>> >>> >>> >>> >>>  >>> Check out the new SourceForge.net Marketplace. >>> It's the best place to buy or sell services for >>> just about anything Open Source. >>> http://sourceforge.net/services/buy/index.php >>> _______________________________________________ >>> Libmeshusers mailing list >>> Libmeshusers@... >>> https://lists.sourceforge.net/lists/listinfo/libmeshusers >> >> >>  >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> Libmeshusers mailing list >> Libmeshusers@... >> https://lists.sourceforge.net/lists/listinfo/libmeshusers >> > 
From: Roy Stogner <roy@st...>  20080612 20:08:34

On Thu, 12 Jun 2008, Derek Gaston wrote: > Of course putting all my thoughts together in an email made me realize > what I needed to do... all I need to do is use the usual side > assembly... and call elem>is_node_on_side(i,side)... and if it is > then that dof is on the side... then I can just set > Re(i)=soln(dof_indices[i])bc_value like I want to... overriding > whatever values were assembled into Re before I ever add it into the > residual... This looks good, but you might find it easier in the long run to use FE::dofs_on_side() rather than Elem::is_node_on_side; the latter might make it too easy to write code that only works on isoparametric Lagrange elements.  Roy 
From: John Peterson <jwpeterson@gm...>  20080612 20:05:24

Hey Derek, I'm curious, without a fortran compiler of any kind, didn't petsc's configure script complain with ================================================================================= TESTING: FortranMPICheck from config.packages.MPI(python/BuildSystem/config/packages/MPI.py:523) ********************************************************************************* UNABLE to CONFIGURE with GIVEN OPTIONS (see configure.log for details):  Fortran error! mpif.h could not be located at: ['/usr/local/mpi/include'] Thanks, J On Thu, Jun 12, 2008 at 9:42 AM, Derek Gaston <friedmud@...> wrote: > For OSX 10.5.3 here's what I do. > > 1. Get MPICH1... compile and install into a place in my home directory. > 2. Make sure my PATH is set so that the mpicxx/mpicc is the one that > I just compiled and installed from MPICH1. > 3. Compile PetsC using "./config/configure.py withcc=mpicc  > downloadcblaslapack=1". Note the _c_ blaslapack as I haven't > taken the time to get a fortran compiler working in OSX. > 4. Build PetsC > 5. Set PETSC_HOME and PETS_ARCH. > 6. Download libMesh and configure with "./configure disable > shared". If you do it all right there is no reason to use enable > mpi or withmpi. > 7. Make libMesh. > 8. Enjoy! > > I'm sure this same sequence will work with MPICH2. The biggest thing > is to make sure that mpicc is in your path and to pass that as with > cc to PetsC. If you do that (and you set PETSC_HOME and PETSC_ARCH > correctly) libMesh will automatically pick up on PetsC and compile > with mpi. > > Derek > > On Jun 12, 2008, at 1:51 AM, Coulaud Olivier wrote: > >> Hi, >> >> I try to install the last version on Mac OS X (10.5.3 and >> gcc 4.0) with the following options >> >> ./configure disabletriangle enablempi withmpi=/opt/mpi/mpich2 >> disabletecplot >> >> But it seems to have some problems when I want shared libraries. >> >> ... >> >> Compiling C (in optimized mode) timing.c... >> >> Compiling C (in optimized mode) util.c... >> >> Linking /Users/coulaudolivier/MesData/Recherche/DMEF/libmultiscale/ >> libmultiscaleexternals/external/libmesh0.6.2/contrib/lib/i686apple >> darwin9.3.0_opt/libmetis.dylib >> >> Undefined symbols: >> >> "_main", referenced from: >> >> start in crt1.10.5.o >> >> ld: symbol(s) not found >> >> collect2: ld returned 1 exit status >> >> make[2]: *** [/Users/coulaudolivier/MesData/Recherche/DMEF/ >> libmultiscale/libmultiscaleexternals/external/libmesh0.6.2/contrib/ >> lib/i686appledarwin9.3.0_opt/libmetis.dylib] Error 1 >> >> make[1]: *** [all] Error 2 >> >> make: *** [/Users/coulaudolivier/MesData/Recherche/DMEF/ >> libmultiscale/ >> libmultiscaleexternals/external/libmesh0.6.2/lib/i686apple >> darwin9.3.0_opt/libmesh.dylib] Error 2 >> >> >> >> I set in Make.common dynamic rather shared (non supported for mac os >> x) but I have the same error. >> >> >> >> Any Idea? >> >> >> >> Moreover; is it possible to set a verbose mode to the compilation? >> >> >> >> Thanks in advance >> >>  >> >> >> >> Olivier Coulaud >> >> >>  >> Scalaplix project  INRIA Bordeaux  SudOuest >> 351 cours de la libération  F33400 Talence  France >> >> Tel: [33] (0) 5 24 57 40 80 >> WEB: http://www.labri.fr/perso/coulaud/ >> Mail: Olivier.Coulaud@... >> >> >> >> >> >> >> >> >>  >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> Libmeshusers mailing list >> Libmeshusers@... >> https://lists.sourceforge.net/lists/listinfo/libmeshusers > > >  > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Libmeshusers mailing list > Libmeshusers@... > https://lists.sourceforge.net/lists/listinfo/libmeshusers > 
From: Derek Gaston <friedmud@gm...>  20080612 20:02:35

Thanks for the reply John. I was hesitant to call close()... I wasn't entirely sure that will work correctly with NonlinearImplicitSystem. But I think I've found another way to do it. Derek On Thu, Jun 12, 2008 at 2:00 PM, John Peterson <jwpeterson@...> wrote: > On Thu, Jun 12, 2008 at 2:45 PM, Derek Gaston <friedmud@...> wrote: >> I'm in an interesting position where I need to do a >> numeric_vector.set() after doing a bunch of numeric_vector.add() >> operations... and of course PETSc doesn't like that (says that the >> object is in the wrong state). Doing the add and set in serial works >> fine... >> >> What are my options here? > > Did you try calling close() before trying to set() values? close > basically calls VectorAssemblyBegin() and End() so that afterward, the > object will be in the right "state". > >> Alternatively, I might be going about the whole thing incorrectly. >> The deal is that I need to modify my residual in my jacobian free >> method to account for Dirichlet B.Cs and I want to do it strongly (ie >> put uBC for the residual for those dofs). I can't seem to figure out >> how to do in the "normal" libMesh assembly way of doing things. We >> usually integrate these B.C.s over the entire element on the edge and >> take advantage of the fact that the support for the interior dofs is >> usually zero on that edge. This means that I can't use a loop like >> this: >> >> ###### >> AutoPtr<FEBase> fe_face (FEBase::build(dim, fe_type)); >> QGauss qface(dim1, FIFTH); >> ... >> for ( ; el != end_el ; ++el) >> { >> ... >> for (unsigned int qp=0; qp<qrule.n_points(); qp++) >> { >> //Interior Residual assembly >> } >> >> for (unsigned int side=0; side<elem>n_sides(); side++) >> if (elem>neighbor(side) == NULL) >> for (unsigned int qp=0; qp<qface.n_points(); qp++) >> for (unsigned int i=0; i<phi_face.size(); i++) >> Re(i)=ubc_value; >> ###### >> >> >> Because the Re(i)'s include interior degrees of freedom. What I've >> done to get around this feels all kinds of hackish... it goes >> something like this: >> >> >> ###### >> // Do all interior residual calculations... >> residual.add_vector (Re, dof_indices); >> >> for (unsigned int side=0; side<elem>n_sides(); side++) >> if (elem>neighbor(side) == NULL) >> { >> unsigned int boundary_id = mesh.boundary_info>boundary_id (elem, side); >> >> std::vector<unsigned int> side_dof_indices; >> >> AutoPtr<Elem> side_elem = elem>build_side(side); >> >> dof_map.dof_indices (side_elem.get(), side_dof_indices); >> >> side_Re.resize(side_dof_indices.size()); >> >> for(unsigned int j=0; j<side_dof_indices.size(); j++) >> side_Re(j)=soln(side_dof_indices[j])bc_value; >> } >> >> residual.insert(side_Re, side_dof_indices); >> ###### >> (Note, the above is missing a bunch of pieces that are actually in my >> code... this is just to give you a flavor) >> >> This works great in serial... but not in parallel where PETSc doesn't >> like the combo of add_vector() and insert().... >> >> Is there a better way to do this? Is there a way to tell if the dofs >> are on the boundary or not without having to get the side_dof_indices? >> That would allow me to modify Re before I ever add it to the >> residual... > > Well, once you have a pointer to a node that you know is on the > boundary (should be able to get this information in a variety of ways) > you can do: > > mesh.node_ptr(*it)>dof_number(0, /*system #*/ > v, /*var # */ > 0); /*component #*/ > > to find the global degree of freedom you'd need to modify by hand to > impose the Dirichlet BC. This is specific to Lagrange elements. > > > J > > >> >> Thanks for any help! >> >> Derek >> >>  >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> Libmeshusers mailing list >> Libmeshusers@... >> https://lists.sourceforge.net/lists/listinfo/libmeshusers >> > 
From: Derek Gaston <friedmud@gm...>  20080612 20:01:13

Of course putting all my thoughts together in an email made me realize what I needed to do... all I need to do is use the usual side assembly... and call elem>is_node_on_side(i,side)... and if it is then that dof is on the side... then I can just set Re(i)=soln(dof_indices[i])bc_value like I want to... overriding whatever values were assembled into Re before I ever add it into the residual... This causes a little bit more work... but not much (especially because it gets to reuse a bunch of things). Any other ideas. Derek On Thu, Jun 12, 2008 at 1:45 PM, Derek Gaston <friedmud@...> wrote: > I'm in an interesting position where I need to do a > numeric_vector.set() after doing a bunch of numeric_vector.add() > operations... and of course PETSc doesn't like that (says that the > object is in the wrong state). Doing the add and set in serial works > fine... > > What are my options here? > > Alternatively, I might be going about the whole thing incorrectly. > The deal is that I need to modify my residual in my jacobian free > method to account for Dirichlet B.Cs and I want to do it strongly (ie > put uBC for the residual for those dofs). I can't seem to figure out > how to do in the "normal" libMesh assembly way of doing things. We > usually integrate these B.C.s over the entire element on the edge and > take advantage of the fact that the support for the interior dofs is > usually zero on that edge. This means that I can't use a loop like > this: > > ###### > AutoPtr<FEBase> fe_face (FEBase::build(dim, fe_type)); > QGauss qface(dim1, FIFTH); > ... > for ( ; el != end_el ; ++el) > { > ... > for (unsigned int qp=0; qp<qrule.n_points(); qp++) > { > //Interior Residual assembly > } > > for (unsigned int side=0; side<elem>n_sides(); side++) > if (elem>neighbor(side) == NULL) > for (unsigned int qp=0; qp<qface.n_points(); qp++) > for (unsigned int i=0; i<phi_face.size(); i++) > Re(i)=ubc_value; > ###### > > > Because the Re(i)'s include interior degrees of freedom. What I've > done to get around this feels all kinds of hackish... it goes > something like this: > > > ###### > // Do all interior residual calculations... > residual.add_vector (Re, dof_indices); > > for (unsigned int side=0; side<elem>n_sides(); side++) > if (elem>neighbor(side) == NULL) > { > unsigned int boundary_id = mesh.boundary_info>boundary_id (elem, side); > > std::vector<unsigned int> side_dof_indices; > > AutoPtr<Elem> side_elem = elem>build_side(side); > > dof_map.dof_indices (side_elem.get(), side_dof_indices); > > side_Re.resize(side_dof_indices.size()); > > for(unsigned int j=0; j<side_dof_indices.size(); j++) > side_Re(j)=soln(side_dof_indices[j])bc_value; > } > > residual.insert(side_Re, side_dof_indices); > ###### > (Note, the above is missing a bunch of pieces that are actually in my > code... this is just to give you a flavor) > > This works great in serial... but not in parallel where PETSc doesn't > like the combo of add_vector() and insert().... > > Is there a better way to do this? Is there a way to tell if the dofs > are on the boundary or not without having to get the side_dof_indices? > That would allow me to modify Re before I ever add it to the > residual... > > Thanks for any help! > > Derek > 
From: John Peterson <jwpeterson@gm...>  20080612 20:00:04

On Thu, Jun 12, 2008 at 2:45 PM, Derek Gaston <friedmud@...> wrote: > I'm in an interesting position where I need to do a > numeric_vector.set() after doing a bunch of numeric_vector.add() > operations... and of course PETSc doesn't like that (says that the > object is in the wrong state). Doing the add and set in serial works > fine... > > What are my options here? Did you try calling close() before trying to set() values? close basically calls VectorAssemblyBegin() and End() so that afterward, the object will be in the right "state". > Alternatively, I might be going about the whole thing incorrectly. > The deal is that I need to modify my residual in my jacobian free > method to account for Dirichlet B.Cs and I want to do it strongly (ie > put uBC for the residual for those dofs). I can't seem to figure out > how to do in the "normal" libMesh assembly way of doing things. We > usually integrate these B.C.s over the entire element on the edge and > take advantage of the fact that the support for the interior dofs is > usually zero on that edge. This means that I can't use a loop like > this: > > ###### > AutoPtr<FEBase> fe_face (FEBase::build(dim, fe_type)); > QGauss qface(dim1, FIFTH); > ... > for ( ; el != end_el ; ++el) > { > ... > for (unsigned int qp=0; qp<qrule.n_points(); qp++) > { > //Interior Residual assembly > } > > for (unsigned int side=0; side<elem>n_sides(); side++) > if (elem>neighbor(side) == NULL) > for (unsigned int qp=0; qp<qface.n_points(); qp++) > for (unsigned int i=0; i<phi_face.size(); i++) > Re(i)=ubc_value; > ###### > > > Because the Re(i)'s include interior degrees of freedom. What I've > done to get around this feels all kinds of hackish... it goes > something like this: > > > ###### > // Do all interior residual calculations... > residual.add_vector (Re, dof_indices); > > for (unsigned int side=0; side<elem>n_sides(); side++) > if (elem>neighbor(side) == NULL) > { > unsigned int boundary_id = mesh.boundary_info>boundary_id (elem, side); > > std::vector<unsigned int> side_dof_indices; > > AutoPtr<Elem> side_elem = elem>build_side(side); > > dof_map.dof_indices (side_elem.get(), side_dof_indices); > > side_Re.resize(side_dof_indices.size()); > > for(unsigned int j=0; j<side_dof_indices.size(); j++) > side_Re(j)=soln(side_dof_indices[j])bc_value; > } > > residual.insert(side_Re, side_dof_indices); > ###### > (Note, the above is missing a bunch of pieces that are actually in my > code... this is just to give you a flavor) > > This works great in serial... but not in parallel where PETSc doesn't > like the combo of add_vector() and insert().... > > Is there a better way to do this? Is there a way to tell if the dofs > are on the boundary or not without having to get the side_dof_indices? > That would allow me to modify Re before I ever add it to the > residual... Well, once you have a pointer to a node that you know is on the boundary (should be able to get this information in a variety of ways) you can do: mesh.node_ptr(*it)>dof_number(0, /*system #*/ v, /*var # */ 0); /*component #*/ to find the global degree of freedom you'd need to modify by hand to impose the Dirichlet BC. This is specific to Lagrange elements. J > > Thanks for any help! > > Derek > >  > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Libmeshusers mailing list > Libmeshusers@... > https://lists.sourceforge.net/lists/listinfo/libmeshusers > 
From: Derek Gaston <friedmud@gm...>  20080612 19:45:52

I'm in an interesting position where I need to do a numeric_vector.set() after doing a bunch of numeric_vector.add() operations... and of course PETSc doesn't like that (says that the object is in the wrong state). Doing the add and set in serial works fine... What are my options here? Alternatively, I might be going about the whole thing incorrectly. The deal is that I need to modify my residual in my jacobian free method to account for Dirichlet B.Cs and I want to do it strongly (ie put uBC for the residual for those dofs). I can't seem to figure out how to do in the "normal" libMesh assembly way of doing things. We usually integrate these B.C.s over the entire element on the edge and take advantage of the fact that the support for the interior dofs is usually zero on that edge. This means that I can't use a loop like this: ###### AutoPtr<FEBase> fe_face (FEBase::build(dim, fe_type)); QGauss qface(dim1, FIFTH); ... for ( ; el != end_el ; ++el) { ... for (unsigned int qp=0; qp<qrule.n_points(); qp++) { //Interior Residual assembly } for (unsigned int side=0; side<elem>n_sides(); side++) if (elem>neighbor(side) == NULL) for (unsigned int qp=0; qp<qface.n_points(); qp++) for (unsigned int i=0; i<phi_face.size(); i++) Re(i)=ubc_value; ###### Because the Re(i)'s include interior degrees of freedom. What I've done to get around this feels all kinds of hackish... it goes something like this: ###### // Do all interior residual calculations... residual.add_vector (Re, dof_indices); for (unsigned int side=0; side<elem>n_sides(); side++) if (elem>neighbor(side) == NULL) { unsigned int boundary_id = mesh.boundary_info>boundary_id (elem, side); std::vector<unsigned int> side_dof_indices; AutoPtr<Elem> side_elem = elem>build_side(side); dof_map.dof_indices (side_elem.get(), side_dof_indices); side_Re.resize(side_dof_indices.size()); for(unsigned int j=0; j<side_dof_indices.size(); j++) side_Re(j)=soln(side_dof_indices[j])bc_value; } residual.insert(side_Re, side_dof_indices); ###### (Note, the above is missing a bunch of pieces that are actually in my code... this is just to give you a flavor) This works great in serial... but not in parallel where PETSc doesn't like the combo of add_vector() and insert().... Is there a better way to do this? Is there a way to tell if the dofs are on the boundary or not without having to get the side_dof_indices? That would allow me to modify Re before I ever add it to the residual... Thanks for any help! Derek 
From: John Peterson <jwpeterson@gm...>  20080612 17:36:42

On Thu, Jun 12, 2008 at 11:48 AM, Yujie <recrusader@...> wrote: > Dear John: > > However, according to your method, there is always the integration > information in "fabs(u)". Is it ok? thanks again. Yes, the point is you are taking the absolute value of something you've already summed up, not the absolute of each term in a series. J > Regards, > Yujie > > On 6/12/08, John Peterson <jwpeterson@...> wrote: >> >> Hi, >> >> You first need to loop over basis functions, to get the value of u at >> a single quadrature point. Then you integrate the absolute value of >> this summed quantity. Here's pseudocode >> >> Real element_integral=0; >> >> for each qp >> >> for each i >> accumulate u += u(i) * phi[i][qp] >> end i >> >> element_integral += JxW[qp] * fabs(u); >> >> end qp >> >> >> >> >> On Thu, Jun 12, 2008 at 9:30 AM, Yujie <recrusader@...> wrote: >> > Dear John: >> > >> > Thank you for your reply. Now, my method is to use the following loops >> > for (qp) >> > { >> > for(k for dof in elem) >> > { >> > JxW[qp]*fabs(u_{k}*\phi[k][qp]) >> > } >> > } >> > However, because phi[k][qp] contains integration information >> > (qp), I don't confirm whether it is right. Could you give me some hints? >> > thanks again. >> > >> > Regards, >> > Yujie >> > >> > >> > On 6/12/08, John Peterson <jwpeterson@...> wrote: >> >> >> >> How about using the C function, "fabs()" to get the absolute value? >> >> >> >> >> >> J >> >> >> >> >> >> On Thu, Jun 12, 2008 at 1:15 AM, Yujie <recrusader@...> wrote: >> >> > hi, >> >> > >> >> > Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the number of DoF.   is >> >> > to >> >> > get >> >> > the absolute values. >> >> > u_{k} is obtained by solving FEMbased linear equation. \phi_{k} is >> >> > basis >> >> > function. >> >> > In libmesh, if I do an integration on element ei, I use >> >> > JxW[qp]*u_{k}*\phi[k][qp]. However, how to first get the absolute >> >> > values >> >> > of >> >> > u? thanks a lot. >> >> > >> >> > Regards, >> >> > Yujie >> >> >> >> > >> >> > >> >> >  >> >> > Check out the new SourceForge.net Marketplace. >> >> > It's the best place to buy or sell services for >> >> > just about anything Open Source. >> >> > http://sourceforge.net/services/buy/index.php >> >> > _______________________________________________ >> >> > Libmeshusers mailing list >> >> > Libmeshusers@... >> >> > https://lists.sourceforge.net/lists/listinfo/libmeshusers >> >> > >> > >> > > > 
From: Yujie <recrusader@gm...>  20080612 16:50:29

Dear David: Thank you for your mentioning this problem. However, it is better how to do it regarding my problem? thanks a lot. Regards, Yujie On 6/12/08, David Knezevic <dave.knez@...> wrote: > > Also, it's worth noting that the absolute value of u probably won't be > smooth, so you may get poor accuracy trying to integrate u with a > quadrature rule... > > > John Peterson wrote: > >> Hi, >> >> You first need to loop over basis functions, to get the value of u at >> a single quadrature point. Then you integrate the absolute value of >> this summed quantity. Here's pseudocode >> >> Real element_integral=0; >> >> for each qp >> >> for each i >> accumulate u += u(i) * phi[i][qp] >> end i >> >> element_integral += JxW[qp] * fabs(u); >> >> end qp >> >> >> >> On Thu, Jun 12, 2008 at 9:30 AM, Yujie <recrusader@...> wrote: >> >> >>> Dear John: >>> >>> Thank you for your reply. Now, my method is to use the following loops >>> for (qp) >>> { >>> for(k for dof in elem) >>> { >>> JxW[qp]*fabs(u_{k}*\phi[k][qp]) >>> } >>> } >>> However, because phi[k][qp] contains integration information >>> (qp), I don't confirm whether it is right. Could you give me some hints? >>> thanks again. >>> >>> Regards, >>> Yujie >>> >>> >>> On 6/12/08, John Peterson <jwpeterson@...> wrote: >>> >>> >>>> How about using the C function, "fabs()" to get the absolute value? >>>> >>>> >>>> J >>>> >>>> >>>> On Thu, Jun 12, 2008 at 1:15 AM, Yujie <recrusader@...> wrote: >>>> >>>> >>>>> hi, >>>>> >>>>> Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the number of DoF.   is >>>>> to >>>>> get >>>>> the absolute values. >>>>> u_{k} is obtained by solving FEMbased linear equation. \phi_{k} is >>>>> basis >>>>> function. >>>>> In libmesh, if I do an integration on element ei, I use >>>>> JxW[qp]*u_{k}*\phi[k][qp]. However, how to first get the absolute >>>>> values >>>>> of >>>>> u? thanks a lot. >>>>> >>>>> Regards, >>>>> Yujie >>>>> >>>>>  >>>>> Check out the new SourceForge.net Marketplace. >>>>> It's the best place to buy or sell services for >>>>> just about anything Open Source. >>>>> http://sourceforge.net/services/buy/index.php >>>>> _______________________________________________ >>>>> Libmeshusers mailing list >>>>> Libmeshusers@... >>>>> https://lists.sourceforge.net/lists/listinfo/libmeshusers >>>>> >>>>> >>>>> >>>> >>> >> >>  >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> Libmeshusers mailing list >> Libmeshusers@... >> https://lists.sourceforge.net/lists/listinfo/libmeshusers >> >> >> > > 
From: Yujie <recrusader@gm...>  20080612 16:48:26

Dear John: However, according to your method, there is always the integration information in "fabs(u)". Is it ok? thanks again. Regards, Yujie On 6/12/08, John Peterson <jwpeterson@...> wrote: > > Hi, > > You first need to loop over basis functions, to get the value of u at > a single quadrature point. Then you integrate the absolute value of > this summed quantity. Here's pseudocode > > Real element_integral=0; > > for each qp > > for each i > accumulate u += u(i) * phi[i][qp] > end i > > element_integral += JxW[qp] * fabs(u); > > end qp > > > > > On Thu, Jun 12, 2008 at 9:30 AM, Yujie <recrusader@...> wrote: > > Dear John: > > > > Thank you for your reply. Now, my method is to use the following loops > > for (qp) > > { > > for(k for dof in elem) > > { > > JxW[qp]*fabs(u_{k}*\phi[k][qp]) > > } > > } > > However, because phi[k][qp] contains integration information > > (qp), I don't confirm whether it is right. Could you give me some hints? > thanks again. > > > > Regards, > > Yujie > > > > > > On 6/12/08, John Peterson <jwpeterson@...> wrote: > >> > >> How about using the C function, "fabs()" to get the absolute value? > >> > >> > >> J > >> > >> > >> On Thu, Jun 12, 2008 at 1:15 AM, Yujie <recrusader@...> wrote: > >> > hi, > >> > > >> > Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the number of DoF.   is > to > >> > get > >> > the absolute values. > >> > u_{k} is obtained by solving FEMbased linear equation. \phi_{k} is > >> > basis > >> > function. > >> > In libmesh, if I do an integration on element ei, I use > >> > JxW[qp]*u_{k}*\phi[k][qp]. However, how to first get the absolute > values > >> > of > >> > u? thanks a lot. > >> > > >> > Regards, > >> > Yujie > >> > >> > > >> > >  > >> > Check out the new SourceForge.net Marketplace. > >> > It's the best place to buy or sell services for > >> > just about anything Open Source. > >> > http://sourceforge.net/services/buy/index.php > >> > _______________________________________________ > >> > Libmeshusers mailing list > >> > Libmeshusers@... > >> > https://lists.sourceforge.net/lists/listinfo/libmeshusers > >> > > > > > > 
From: Roy Stogner <roy@st...>  20080612 16:04:56

On Thu, 12 Jun 2008, David Knezevic wrote: > John's suggestion of mollifying the singularity is probably the best > bet. Or maybe just using a higher order quadrature rule than the default > (using extra_quadrature_order) would give an acceptable approximation. IIRC, just using higher order Gaussian quadrature rules didn't work well when I tried it for the CloughTocher elements; I had to write my own subelementbysubelement quadrature rule generator for those. Of course, the bilinear form I was trying to integrate had actual discontinuities and not just discontinuous first derivatives. But in any case what happens when you try to use p refinement to resolve a nonsmooth function? You don't get exponential convergence, you get "ringing". Bumping up quadrature order is worth trying out since it's so easy to do, and of course depending on what this integral(u) is being used for a little quadrature error might not be the end of the world, but there's no one obvious right thing to do if you're using p>1 and dim>1 elements.  Roy >> >> On a related note, would a good quadrature rule for u involve >> integration points at the places where u changes sign ?. >> >> Nachiket >> >> >> >> >>> John Peterson wrote: >>> >>>> Hi, >>>> >>>> You first need to loop over basis functions, to get the value of u at >>>> a single quadrature point. Then you integrate the absolute value of >>>> this summed quantity. Here's pseudocode >>>> >>>> Real element_integral=0; >>>> >>>> for each qp >>>> >>>> for each i >>>> accumulate u += u(i) * phi[i][qp] >>>> end i >>>> >>>> element_integral += JxW[qp] * fabs(u); >>>> >>>> end qp >>>> >>>> >>>> >>>> On Thu, Jun 12, 2008 at 9:30 AM, Yujie <recrusader@...> wrote: >>>> >>>> >>>>> Dear John: >>>>> >>>>> Thank you for your reply. Now, my method is to use the following loops >>>>> for (qp) >>>>> { >>>>> for(k for dof in elem) >>>>> { >>>>> JxW[qp]*fabs(u_{k}*\phi[k][qp]) >>>>> } >>>>> } >>>>> However, because phi[k][qp] contains integration information >>>>> (qp), I don't confirm whether it is right. Could you give me some hints? thanks again. >>>>> >>>>> Regards, >>>>> Yujie >>>>> >>>>> >>>>> On 6/12/08, John Peterson <jwpeterson@...> wrote: >>>>> >>>>> >>>>>> How about using the C function, "fabs()" to get the absolute value? >>>>>> >>>>>> >>>>>> J >>>>>> >>>>>> >>>>>> On Thu, Jun 12, 2008 at 1:15 AM, Yujie <recrusader@...> wrote: >>>>>> >>>>>> >>>>>>> hi, >>>>>>> >>>>>>> Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the number of DoF.   is to >>>>>>> get >>>>>>> the absolute values. >>>>>>> u_{k} is obtained by solving FEMbased linear equation. \phi_{k} is >>>>>>> basis >>>>>>> function. >>>>>>> In libmesh, if I do an integration on element ei, I use >>>>>>> JxW[qp]*u_{k}*\phi[k][qp]. However, how to first get the absolute values >>>>>>> of >>>>>>> u? thanks a lot. >>>>>>> >>>>>>> Regards, >>>>>>> Yujie >>>>>>> >>>>>>>  >>>>>>> Check out the new SourceForge.net Marketplace. >>>>>>> It's the best place to buy or sell services for >>>>>>> just about anything Open Source. >>>>>>> http://sourceforge.net/services/buy/index.php >>>>>>> _______________________________________________ >>>>>>> Libmeshusers mailing list >>>>>>> Libmeshusers@... >>>>>>> https://lists.sourceforge.net/lists/listinfo/libmeshusers >>>>>>> >>>>>>> >>>>>>> >>>>  >>>> Check out the new SourceForge.net Marketplace. >>>> It's the best place to buy or sell services for >>>> just about anything Open Source. >>>> http://sourceforge.net/services/buy/index.php >>>> _______________________________________________ >>>> Libmeshusers mailing list >>>> Libmeshusers@... >>>> https://lists.sourceforge.net/lists/listinfo/libmeshusers >>>> >>>> >>>> >>>  >>> Check out the new SourceForge.net Marketplace. >>> It's the best place to buy or sell services for >>> just about anything Open Source. >>> http://sourceforge.net/services/buy/index.php >>> _______________________________________________ >>> Libmeshusers mailing list >>> Libmeshusers@... >>> https://lists.sourceforge.net/lists/listinfo/libmeshusers >>> >>> >> >> > > >  > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Libmeshusers mailing list > Libmeshusers@... > https://lists.sourceforge.net/lists/listinfo/libmeshusers > 
From: David Knezevic <dave.knez@gm...>  20080612 15:39:39

Yes, in principle you could use a composite quadrature rule that sums the integral of each smooth part of u. That's easy enough in 1D, and that would involve using quadrature points at the zeros of u, but it would be very difficult to do in 2D or 3D since the zero level set of u would in general have some complicated shape. John's suggestion of mollifying the singularity is probably the best bet. Or maybe just using a higher order quadrature rule than the default (using extra_quadrature_order) would give an acceptable approximation.  Dave > > On a related note, would a good quadrature rule for u involve > integration points at the places where u changes sign ?. > > Nachiket > > > > >> John Peterson wrote: >> >>> Hi, >>> >>> You first need to loop over basis functions, to get the value of u at >>> a single quadrature point. Then you integrate the absolute value of >>> this summed quantity. Here's pseudocode >>> >>> Real element_integral=0; >>> >>> for each qp >>> >>> for each i >>> accumulate u += u(i) * phi[i][qp] >>> end i >>> >>> element_integral += JxW[qp] * fabs(u); >>> >>> end qp >>> >>> >>> >>> On Thu, Jun 12, 2008 at 9:30 AM, Yujie <recrusader@...> wrote: >>> >>> >>>> Dear John: >>>> >>>> Thank you for your reply. Now, my method is to use the following loops >>>> for (qp) >>>> { >>>> for(k for dof in elem) >>>> { >>>> JxW[qp]*fabs(u_{k}*\phi[k][qp]) >>>> } >>>> } >>>> However, because phi[k][qp] contains integration information >>>> (qp), I don't confirm whether it is right. Could you give me some hints? thanks again. >>>> >>>> Regards, >>>> Yujie >>>> >>>> >>>> On 6/12/08, John Peterson <jwpeterson@...> wrote: >>>> >>>> >>>>> How about using the C function, "fabs()" to get the absolute value? >>>>> >>>>> >>>>> J >>>>> >>>>> >>>>> On Thu, Jun 12, 2008 at 1:15 AM, Yujie <recrusader@...> wrote: >>>>> >>>>> >>>>>> hi, >>>>>> >>>>>> Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the number of DoF.   is to >>>>>> get >>>>>> the absolute values. >>>>>> u_{k} is obtained by solving FEMbased linear equation. \phi_{k} is >>>>>> basis >>>>>> function. >>>>>> In libmesh, if I do an integration on element ei, I use >>>>>> JxW[qp]*u_{k}*\phi[k][qp]. However, how to first get the absolute values >>>>>> of >>>>>> u? thanks a lot. >>>>>> >>>>>> Regards, >>>>>> Yujie >>>>>> >>>>>>  >>>>>> Check out the new SourceForge.net Marketplace. >>>>>> It's the best place to buy or sell services for >>>>>> just about anything Open Source. >>>>>> http://sourceforge.net/services/buy/index.php >>>>>> _______________________________________________ >>>>>> Libmeshusers mailing list >>>>>> Libmeshusers@... >>>>>> https://lists.sourceforge.net/lists/listinfo/libmeshusers >>>>>> >>>>>> >>>>>> >>>  >>> Check out the new SourceForge.net Marketplace. >>> It's the best place to buy or sell services for >>> just about anything Open Source. >>> http://sourceforge.net/services/buy/index.php >>> _______________________________________________ >>> Libmeshusers mailing list >>> Libmeshusers@... >>> https://lists.sourceforge.net/lists/listinfo/libmeshusers >>> >>> >>> >>  >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> Libmeshusers mailing list >> Libmeshusers@... >> https://lists.sourceforge.net/lists/listinfo/libmeshusers >> >> > > 
From: John Peterson <jwpeterson@gm...>  20080612 15:25:26

On Thu, Jun 12, 2008 at 10:13 AM, li pan <li76pan@...> wrote: > Dear John, > I would like to follow this question. In Yujie's > question u(i) is unknown value. How can you calculate > u += u(i) * phi[i][qp] I assumed this was a postprocessing step: u is already known, now we just want to compute the integral of its absolute value over each element. If, on the other hand, you are solving a problem where one of the terms involves u and you are trying to linearize this term, that's a different story. As we know, u is not a smooth and so differentiating it for the Jacobian can be tricky. One possibility involves mollification of the singularity with a hyperbolic tangent term u = u * sign(u) \approx u * tanh(u/eps) eps << 1. J > thanx > > pan > > > >  John Peterson <jwpeterson@...> wrote: > >> Hi, >> >> You first need to loop over basis functions, to get >> the value of u at >> a single quadrature point. Then you integrate the >> absolute value of >> this summed quantity. Here's pseudocode >> >> Real element_integral=0; >> >> for each qp >> >> for each i >> accumulate u += u(i) * phi[i][qp] >> end i >> >> element_integral += JxW[qp] * fabs(u); >> >> end qp >> >> >> >> On Thu, Jun 12, 2008 at 9:30 AM, Yujie >> <recrusader@...> wrote: >> > Dear John: >> > >> > Thank you for your reply. Now, my method is to use >> the following loops >> > for (qp) >> > { >> > for(k for dof in elem) >> > { >> > JxW[qp]*fabs(u_{k}*\phi[k][qp]) >> > } >> > } >> > However, because phi[k][qp] contains integration >> information >> > (qp), I don't confirm whether it is right. Could >> you give me some hints? thanks again. >> > >> > Regards, >> > Yujie >> > >> > >> > On 6/12/08, John Peterson <jwpeterson@...> >> wrote: >> >> >> >> How about using the C function, "fabs()" to get >> the absolute value? >> >> >> >> >> >> J >> >> >> >> >> >> On Thu, Jun 12, 2008 at 1:15 AM, Yujie >> <recrusader@...> wrote: >> >> > hi, >> >> > >> >> > Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the >> number of DoF.   is to >> >> > get >> >> > the absolute values. >> >> > u_{k} is obtained by solving FEMbased linear >> equation. \phi_{k} is >> >> > basis >> >> > function. >> >> > In libmesh, if I do an integration on element >> ei, I use >> >> > JxW[qp]*u_{k}*\phi[k][qp]. However, how to >> first get the absolute values >> >> > of >> >> > u? thanks a lot. >> >> > >> >> > Regards, >> >> > Yujie >> >> >> >> > >> >> > >> >  >> >> > Check out the new SourceForge.net Marketplace. >> >> > It's the best place to buy or sell services for >> >> > just about anything Open Source. >> >> > http://sourceforge.net/services/buy/index.php >> >> > _______________________________________________ >> >> > Libmeshusers mailing list >> >> > Libmeshusers@... >> >> > >> > https://lists.sourceforge.net/lists/listinfo/libmeshusers >> >> > >> > >> > >> >> >  >> Check out the new SourceForge.net Marketplace. >> It's the best place to buy or sell services for >> just about anything Open Source. >> http://sourceforge.net/services/buy/index.php >> _______________________________________________ >> Libmeshusers mailing list >> Libmeshusers@... >> > https://lists.sourceforge.net/lists/listinfo/libmeshusers >> > > > > > 
From: li pan <li76pan@ya...>  20080612 15:13:26

Dear John, I would like to follow this question. In Yujie's question u(i) is unknown value. How can you calculate u += u(i) * phi[i][qp] thanx pan  John Peterson <jwpeterson@...> wrote: > Hi, > > You first need to loop over basis functions, to get > the value of u at > a single quadrature point. Then you integrate the > absolute value of > this summed quantity. Here's pseudocode > > Real element_integral=0; > > for each qp > > for each i > accumulate u += u(i) * phi[i][qp] > end i > > element_integral += JxW[qp] * fabs(u); > > end qp > > > > On Thu, Jun 12, 2008 at 9:30 AM, Yujie > <recrusader@...> wrote: > > Dear John: > > > > Thank you for your reply. Now, my method is to use > the following loops > > for (qp) > > { > > for(k for dof in elem) > > { > > JxW[qp]*fabs(u_{k}*\phi[k][qp]) > > } > > } > > However, because phi[k][qp] contains integration > information > > (qp), I don't confirm whether it is right. Could > you give me some hints? thanks again. > > > > Regards, > > Yujie > > > > > > On 6/12/08, John Peterson <jwpeterson@...> > wrote: > >> > >> How about using the C function, "fabs()" to get > the absolute value? > >> > >> > >> J > >> > >> > >> On Thu, Jun 12, 2008 at 1:15 AM, Yujie > <recrusader@...> wrote: > >> > hi, > >> > > >> > Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the > number of DoF.   is to > >> > get > >> > the absolute values. > >> > u_{k} is obtained by solving FEMbased linear > equation. \phi_{k} is > >> > basis > >> > function. > >> > In libmesh, if I do an integration on element > ei, I use > >> > JxW[qp]*u_{k}*\phi[k][qp]. However, how to > first get the absolute values > >> > of > >> > u? thanks a lot. > >> > > >> > Regards, > >> > Yujie > >> > >> > > >> > >  > >> > Check out the new SourceForge.net Marketplace. > >> > It's the best place to buy or sell services for > >> > just about anything Open Source. > >> > http://sourceforge.net/services/buy/index.php > >> > _______________________________________________ > >> > Libmeshusers mailing list > >> > Libmeshusers@... > >> > > https://lists.sourceforge.net/lists/listinfo/libmeshusers > >> > > > > > > >  > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Libmeshusers mailing list > Libmeshusers@... > https://lists.sourceforge.net/lists/listinfo/libmeshusers > 
From: David Knezevic <dave.knez@gm...>  20080612 14:51:41

Also, it's worth noting that the absolute value of u probably won't be smooth, so you may get poor accuracy trying to integrate u with a quadrature rule... John Peterson wrote: > Hi, > > You first need to loop over basis functions, to get the value of u at > a single quadrature point. Then you integrate the absolute value of > this summed quantity. Here's pseudocode > > Real element_integral=0; > > for each qp > > for each i > accumulate u += u(i) * phi[i][qp] > end i > > element_integral += JxW[qp] * fabs(u); > > end qp > > > > On Thu, Jun 12, 2008 at 9:30 AM, Yujie <recrusader@...> wrote: > >> Dear John: >> >> Thank you for your reply. Now, my method is to use the following loops >> for (qp) >> { >> for(k for dof in elem) >> { >> JxW[qp]*fabs(u_{k}*\phi[k][qp]) >> } >> } >> However, because phi[k][qp] contains integration information >> (qp), I don't confirm whether it is right. Could you give me some hints? thanks again. >> >> Regards, >> Yujie >> >> >> On 6/12/08, John Peterson <jwpeterson@...> wrote: >> >>> How about using the C function, "fabs()" to get the absolute value? >>> >>> >>> J >>> >>> >>> On Thu, Jun 12, 2008 at 1:15 AM, Yujie <recrusader@...> wrote: >>> >>>> hi, >>>> >>>> Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the number of DoF.   is to >>>> get >>>> the absolute values. >>>> u_{k} is obtained by solving FEMbased linear equation. \phi_{k} is >>>> basis >>>> function. >>>> In libmesh, if I do an integration on element ei, I use >>>> JxW[qp]*u_{k}*\phi[k][qp]. However, how to first get the absolute values >>>> of >>>> u? thanks a lot. >>>> >>>> Regards, >>>> Yujie >>>> >>>>  >>>> Check out the new SourceForge.net Marketplace. >>>> It's the best place to buy or sell services for >>>> just about anything Open Source. >>>> http://sourceforge.net/services/buy/index.php >>>> _______________________________________________ >>>> Libmeshusers mailing list >>>> Libmeshusers@... >>>> https://lists.sourceforge.net/lists/listinfo/libmeshusers >>>> >>>> >> > >  > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Libmeshusers mailing list > Libmeshusers@... > https://lists.sourceforge.net/lists/listinfo/libmeshusers > > 
From: John Peterson <jwpeterson@gm...>  20080612 14:43:51

Hi, You first need to loop over basis functions, to get the value of u at a single quadrature point. Then you integrate the absolute value of this summed quantity. Here's pseudocode Real element_integral=0; for each qp for each i accumulate u += u(i) * phi[i][qp] end i element_integral += JxW[qp] * fabs(u); end qp On Thu, Jun 12, 2008 at 9:30 AM, Yujie <recrusader@...> wrote: > Dear John: > > Thank you for your reply. Now, my method is to use the following loops > for (qp) > { > for(k for dof in elem) > { > JxW[qp]*fabs(u_{k}*\phi[k][qp]) > } > } > However, because phi[k][qp] contains integration information > (qp), I don't confirm whether it is right. Could you give me some hints? thanks again. > > Regards, > Yujie > > > On 6/12/08, John Peterson <jwpeterson@...> wrote: >> >> How about using the C function, "fabs()" to get the absolute value? >> >> >> J >> >> >> On Thu, Jun 12, 2008 at 1:15 AM, Yujie <recrusader@...> wrote: >> > hi, >> > >> > Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the number of DoF.   is to >> > get >> > the absolute values. >> > u_{k} is obtained by solving FEMbased linear equation. \phi_{k} is >> > basis >> > function. >> > In libmesh, if I do an integration on element ei, I use >> > JxW[qp]*u_{k}*\phi[k][qp]. However, how to first get the absolute values >> > of >> > u? thanks a lot. >> > >> > Regards, >> > Yujie >> >> > >> >  >> > Check out the new SourceForge.net Marketplace. >> > It's the best place to buy or sell services for >> > just about anything Open Source. >> > http://sourceforge.net/services/buy/index.php >> > _______________________________________________ >> > Libmeshusers mailing list >> > Libmeshusers@... >> > https://lists.sourceforge.net/lists/listinfo/libmeshusers >> > > > 
From: Derek Gaston <friedmud@gm...>  20080612 14:42:32

For OSX 10.5.3 here's what I do. 1. Get MPICH1... compile and install into a place in my home directory. 2. Make sure my PATH is set so that the mpicxx/mpicc is the one that I just compiled and installed from MPICH1. 3. Compile PetsC using "./config/configure.py withcc=mpicc  downloadcblaslapack=1". Note the _c_ blaslapack as I haven't taken the time to get a fortran compiler working in OSX. 4. Build PetsC 5. Set PETSC_HOME and PETS_ARCH. 6. Download libMesh and configure with "./configure disable shared". If you do it all right there is no reason to use enable mpi or withmpi. 7. Make libMesh. 8. Enjoy! I'm sure this same sequence will work with MPICH2. The biggest thing is to make sure that mpicc is in your path and to pass that as with cc to PetsC. If you do that (and you set PETSC_HOME and PETSC_ARCH correctly) libMesh will automatically pick up on PetsC and compile with mpi. Derek On Jun 12, 2008, at 1:51 AM, Coulaud Olivier wrote: > Hi, > > I try to install the last version on Mac OS X (10.5.3 and > gcc 4.0) with the following options > > ./configure disabletriangle enablempi withmpi=/opt/mpi/mpich2 > disabletecplot > > But it seems to have some problems when I want shared libraries. > > ... > > Compiling C (in optimized mode) timing.c... > > Compiling C (in optimized mode) util.c... > > Linking /Users/coulaudolivier/MesData/Recherche/DMEF/libmultiscale/ > libmultiscaleexternals/external/libmesh0.6.2/contrib/lib/i686apple > darwin9.3.0_opt/libmetis.dylib > > Undefined symbols: > > "_main", referenced from: > > start in crt1.10.5.o > > ld: symbol(s) not found > > collect2: ld returned 1 exit status > > make[2]: *** [/Users/coulaudolivier/MesData/Recherche/DMEF/ > libmultiscale/libmultiscaleexternals/external/libmesh0.6.2/contrib/ > lib/i686appledarwin9.3.0_opt/libmetis.dylib] Error 1 > > make[1]: *** [all] Error 2 > > make: *** [/Users/coulaudolivier/MesData/Recherche/DMEF/ > libmultiscale/ > libmultiscaleexternals/external/libmesh0.6.2/lib/i686apple > darwin9.3.0_opt/libmesh.dylib] Error 2 > > > > I set in Make.common dynamic rather shared (non supported for mac os > x) but I have the same error. > > > > Any Idea? > > > > Moreover; is it possible to set a verbose mode to the compilation? > > > > Thanks in advance > >  > > > > Olivier Coulaud > > >  > Scalaplix project  INRIA Bordeaux  SudOuest > 351 cours de la libération  F33400 Talence  France > > Tel: [33] (0) 5 24 57 40 80 > WEB: http://www.labri.fr/perso/coulaud/ > Mail: Olivier.Coulaud@... > > > > > > > > >  > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Libmeshusers mailing list > Libmeshusers@... > https://lists.sourceforge.net/lists/listinfo/libmeshusers 
From: Yujie <recrusader@gm...>  20080612 14:30:12

Dear John: Thank you for your reply. Now, my method is to use the following loops for (qp) { for(k for dof in elem) { JxW[qp]*fabs(u_{k}*\phi[k][qp]) } } However, because phi[k][qp] contains integration information (qp), I don't confirm whether it is right. Could you give me some hints? thanks again. Regards, Yujie On 6/12/08, John Peterson <jwpeterson@...> wrote: > > How about using the C function, "fabs()" to get the absolute value? > > > J > > > On Thu, Jun 12, 2008 at 1:15 AM, Yujie <recrusader@...> wrote: > > hi, > > > > Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the number of DoF.   is to > get > > the absolute values. > > u_{k} is obtained by solving FEMbased linear equation. \phi_{k} is basis > > function. > > In libmesh, if I do an integration on element ei, I use > > JxW[qp]*u_{k}*\phi[k][qp]. However, how to first get the absolute values > of > > u? thanks a lot. > > > > Regards, > > Yujie > > >  > > Check out the new SourceForge.net Marketplace. > > It's the best place to buy or sell services for > > just about anything Open Source. > > http://sourceforge.net/services/buy/index.php > > _______________________________________________ > > Libmeshusers mailing list > > Libmeshusers@... > > https://lists.sourceforge.net/lists/listinfo/libmeshusers > > > 
From: John Peterson <jwpeterson@gm...>  20080612 13:32:05

How about using the C function, "fabs()" to get the absolute value? J On Thu, Jun 12, 2008 at 1:15 AM, Yujie <recrusader@...> wrote: > hi, > > Here, u=\sum_{k=1}^{N} u_{k} \phi_{k}. N is the number of DoF.   is to get > the absolute values. > u_{k} is obtained by solving FEMbased linear equation. \phi_{k} is basis > function. > In libmesh, if I do an integration on element ei, I use > JxW[qp]*u_{k}*\phi[k][qp]. However, how to first get the absolute values of > u? thanks a lot. > > Regards, > Yujie >  > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Libmeshusers mailing list > Libmeshusers@... > https://lists.sourceforge.net/lists/listinfo/libmeshusers > 
From: Coulaud Olivier <Olivier.Coulaud@in...>  20080612 07:51:48

Hi, I try to install the last version on Mac OS X (10.5.3 and gcc 4.0) with the following options ./configure disabletriangle enablempi withmpi=/opt/mpi/mpich2 disabletecplot But it seems to have some problems when I want shared libraries. ... Compiling C (in optimized mode) timing.c... Compiling C (in optimized mode) util.c... Linking /Users/coulaudolivier/MesData/Recherche/DMEF/libmultiscale/ libmultiscaleexternals/external/libmesh0.6.2/contrib/lib/i686apple darwin9.3.0_opt/libmetis.dylib Undefined symbols: "_main", referenced from: start in crt1.10.5.o ld: symbol(s) not found collect2: ld returned 1 exit status make[2]: *** [/Users/coulaudolivier/MesData/Recherche/DMEF/ libmultiscale/libmultiscaleexternals/external/libmesh0.6.2/contrib/ lib/i686appledarwin9.3.0_opt/libmetis.dylib] Error 1 make[1]: *** [all] Error 2 make: *** [/Users/coulaudolivier/MesData/Recherche/DMEF/libmultiscale/ libmultiscaleexternals/external/libmesh0.6.2/lib/i686apple darwin9.3.0_opt/libmesh.dylib] Error 2 I set in Make.common dynamic rather shared (non supported for mac os x) but I have the same error. Any Idea? Moreover; is it possible to set a verbose mode to the compilation? Thanks in advance  Olivier Coulaud  Scalaplix project  INRIA Bordeaux  SudOuest 351 cours de la libération  F33400 Talence  France Tel: [33] (0) 5 24 57 40 80 WEB: http://www.labri.fr/perso/coulaud/ Mail: Olivier.Coulaud@... 