On Mon, 6 Jul 2009, Anders Logg wrote: > On Mon, Jul 06, 2009 at 04:01:23PM +0200, Johan Hake wrote: >> On Monday 06 July 2009 06:01:51 Shawn Walker wrote: >>> Sorry, for the dumb question, but what exactly will this NewParameter >>> system do? What is the big deal? Does it allow one to set parameters in >>> deeply embedded modules or external libraries? Just a short description >>> would be good! :) >> >> It's not a dumb question at all! >> >> Hopefully the new parameter system will alow users to more easily controll >> both DOLFIN and any built applications using DOLFIN. >> >> A class was previously parameterized using get and set memberfunctions, which >> hide the actuall storage of the parameters. Global parameters was accessed >> using dolfin_get and dolfin_set. Now we store the parameters explicitly using >> the public member parameters, in all classes inheriting Variables. > > Also note the global (in namespace dolfin) variable named parameters > which contains the global parameters for DOLFIN. > > The more decentralized design also means that we have been able to > reduce the number of global parameters to just a few. We can now make > more extensive use of parameters in DOLFIN since it's no longer a > problem to add a new parameter (it does not have to be global > anymore). > >> Each class that want to use the parameters variable defines a static >> default_parameters method. This method is called in the constructor of the >> class populating the parameters. The parameters can then be passed to other >> classes using the first one, or a user can fetch the parameters, building a >> nested parmeter heirarchy. >> >> Such nested parameter set, can be used to parse command options, and/or read >> parameters from file (I think all implementation is not in place for this >> though), and be pretty printed to the user. We also have support for simple >> range checks which makes user code less error prone. >> >> Take a look in >> >> sandbox/misc/ >> >> for a demonstration of the syntax and use in both python and cpp. > > In particular, note that one may print parameters by > > info(parameters); // print global DOLFIN parameters > info(solver.parameters); // print parameters for solver > > -- > Anders
ok, I wasn't aware of this `parameters' variable. - Shawn >> >> >>> - Shawn >>> >>> On Sun, 5 Jul 2009, Anders Logg wrote: >>>> On Sat, Jul 04, 2009 at 07:41:32PM +0100, Garth N. Wells wrote: >>>>> Anders Logg wrote: >>>>>> On Sat, Jul 04, 2009 at 08:04:36PM +0200, Johan Hake wrote: >>>>>>> On Saturday 04 July 2009 19:53:46 Anders Logg wrote: >>>>>>>> On Sat, Jul 04, 2009 at 05:30:42PM +0200, Anders Logg wrote: >>>>>>>>> On Sat, Jul 04, 2009 at 12:59:19AM +0200, Johan Hake wrote: >>>>>>>>>> On Saturday 04 July 2009 00:52:13 Garth N. Wells wrote: >>>>>>>>>>> Johan Hake wrote: >>>>>>>>>>>> On Saturday 04 July 2009 00:14:04 Garth N. Wells wrote: >>>>>>>>>>>>> How should the new parameter system be used from the Python >>>>>>>>>>>>> interface? >>>>>>>>>>>> >>>>>>>>>>>> Looks like you found out of it? >>>>>>>>>>> >>>>>>>>>>> Yes, with some trial and error and a search on "__setitem__". >>>>>>>>>> >>>>>>>>>> Yes I used __setitem__ for all assignments. >>>>>>>>>> >>>>>>>>>> A test is also provided in >>>>>>>>>> >>>>>>>>>> sandbox/misc >>>>>>>>>> >>>>>>>>>> Should update it to a fullfledged unit test before the release. I >>>>>>>>>> see that I need to update the PyDOLFIN interface for nested >>>>>>>>>> parameter set. >>>>>>>>>> >>>>>>>>>> Johan >>>>>>>>> >>>>>>>>> I've been working without internet access and have worked on >>>>>>>>> removing the old parameter system entirely and using the global >>>>>>>>> parameter set instead of dolfin_get/set. >>>>>>>>> >>>>>>>>> I'll try to merge this later tonight and then I suspect there will >>>>>>>>> need to be some more work on getting this to work in Python. >>>>>>>> >>>>>>>> The merge went terribly wrong. We've been editing the same files. >>>>>>>> I need to reimplement the changes in a fresh clone. >>>>>>> >>>>>>> Urk... >>>>>>> >>>>>>> I just touched 5 lines! How could it destroy a whole merge? >>>>>>> >>>>>>> johan >>>>>> >>>>>> Garth had 10 or so changesets in between, related to handling of >>>>>> parameters in Python, linear algebra and demos. I touched some of that >>>>>> as well, so I might as well redo it. >>>>> >>>>> I assumed that the big merge that you warned us about on the list took >>>>> place yesterday, which I why I committed some changes last night to get >>>>> a few demos working. >>>>> >>>>>> This is a reminder of the importance of merging early, often, and that >>>>>> having an internet connection is important when coding... :-) >>>>> >>>>> . . . and we need to get back on top of the buildbots so we can trace >>>>> back which changes break things. >>>>> >>>>> Garth >>>> >>>> How should we deal with situations like this in the future? >>>> >>>> It's good to try to always keep the buildbots green (never breaking >>>> anything) but often cooperation is necessary to get a big change in >>>> place, like now with the parameter system when I have been needing >>>> help from Garth (to fix parameter logic in for example the uBLAS >>>> linear algebra) and Johan (to fix the parameter system in Python). >>>> >>>> Suggestions? We could have two repositories: dolfin and dolfin-dev >>>> and push work in progress to dolfin-dev before we push it to dolfin, >>>> but it will be a complication. We could use dolfin (same as now) for >>>> most things and push to dolfin-dev when we know something will >>>> obviously break. >>>> >>> >>> _______________________________________________ >>> DOLFIN-dev mailing list >>> DOLFIN-dev@fenics.org >>> http://www.fenics.org/mailman/listinfo/dolfin-dev >> >> > _______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@fenics.org http://www.fenics.org/mailman/listinfo/dolfin-dev