Skip to content

Version 4.2 release candidate - #1305

Merged
ZedThree merged 2563 commits into
masterfrom
v4.2-rc
Oct 17, 2018
Merged

Version 4.2 release candidate#1305
ZedThree merged 2563 commits into
masterfrom
v4.2-rc

Conversation

@ZedThree

@ZedThree ZedThree commented Oct 9, 2018

Copy link
Copy Markdown
Member

This is the release candidate for version 4.2.0. New bugfixes should go straight into this branch, new features should go into next. Once we're happy, this will go into master, and we'll merge master into next.

The only difference in this PR from current next is f02880b: bumping the version number, and a merge of master which was missing.

The release date and DOI in the CITATION.cff file need to be updated just before release.

I've run test_suite --all, which is a very nice addition, letting us run all the integrated tests in one go! All of them passed first time, which is even better. Some of the MMS tests are still failing, but these are things like WENO3, which I think is just tricky to MMS. elm-pb also doesn't pass MMS (and needs #1293 to run), but that is also tricky to MMS.

I think the following open PRs need to go into this: #1302 #1293 #1303


This is an enormous release, with about 360 merged PRs, and almost 2,500 commits! I've been trying to summarise them all in a changelog (which also needs to go in!), and there's a lot of good stuff that's gone in in the last year.

This PR doesn't need to be reviewed as such, it's just open to collect any bugfixes that need to go in before the release.

ZedThree and others added 30 commits September 7, 2018 16:11
Simplifies ConditionalOutput a bit by removing need for base_is_cond
and dynamic_cast. Does require making ConditionalOutput a friend of
Output, but the two classes are already tightly coupled
Also conveniently stops a GCC null-deference warning coming from
inside Field*::operator(), although this fix seems suspiciously like
it doesn't actually solve the problem
This way we can avoid doing something horrible like

    void checkData(const Field3D &f,
    #if CHECK > 2
                   REGION region) {
    #else
                   REGION UNUSED(region)) {
    #endif

and still keep the unused parameter warning on by default
std::string name is a public member, so these are redundant.

Fixes issue #1228
* Provide autocomplete for modules and functions
* Don't abort if the file exists
* Write everything in python
* Extend the supported types
* Allow to pass in the arguments
* Set defaults to wrapper; copy from function default
* Use quotes depending on whether/which ones are in the string
* Changed data to positional argument
* See previous commit for the changes
Add some basic required functions like setter and getter
Extend constructors to set default to CELL_CENTRE
Previously the location had not been copied, causing the returned result
to always have location CELL_CENTRE, which is incorrect when the input
has another location.
* add comments
* throw more useful errors
Use 'localmesh' in Coordinates and 'fieldmesh' in interp_to.
Add location argument to Mesh::coordinates to return Coordinates objects
with geometric variables at different locations. CELL_CENTRE version is
read from input and other locations are interpolated from CELL_CENTRE.
Avoids exceptions when checking metrics, Jacobian, etc. where the checks
loop over all points including corner guard cells, although the corner
guard cells are never used.
Also remove 'diagonal' argument which is not needed any more.
PhysicsModelMonitor is now a nested class defined inside PhysicsModel
instead of being a friend class.
Avoids check failures due to NaNs in corner guard cells that should
never be used.
johnomotani and others added 27 commits October 12, 2018 15:00
g_22 is already at outloc, so interp_to(g_22, outloc) is unnecessary.
The bracket_location() method was just checking that the locations of
both input fields and the output are all the same. Can replace this
simply with an ASSERT1 statement in each bracket operator.
Also tidy up calculation of 'sg' intermediate variable in Grad2_par2:
pass outloc to it's derivative and remove unneeded if clause that used
to interpolate 'sg' if its location was wrong.
Throw error messages for non-python collect routines
Provide `getRegion` method on Fields
Div_par_flux() takes FDDY(v, f/B). If f has yup/ydown fields these were
being lost in the division. This commit copies the solution from
Div_par() by dividing creating a new field f_B=f/B whose yup/ydown
fields are also set, before calling FDDY.
Also clarify that Div cannot have outloc == VSHIFT
Not currently supported, as it would involve "cross-staggering" terms
Use std::map::emplace to avoid naming complicated type with insert
Use input field/vector location for CELL_DEFAULT in vecops
The ShiftedMetric class requires TwistShift==true to get yup/ydown
fields correct at the branch cut where poloidal angle and zShift jump.
So check in ShiftedMetric constructor that the option is set correctly.
Add second option to turn off the check if you really want to use
ShiftedMetric with TwistShift=false (e.g. in a linear device).
In new form there is less state the reader needs to keep in their heads.
More location/method fixes for derivatives
…ft-global-option

Check TwistShift==true in ShiftedMetric, add ShiftWithoutTwist option to bypass
* v4.2-rc: (58 commits)
  Invert conditional in Div_par and Div_par_flux
  Make test-yupdown work with new test for TwistShift=true
  Check TwistShift==true in ShiftedMetric
  Remove output location from Curl properly
  Fix whitespace in vecops header
  Deprecate Curl overloads that take a location
  Fix locations of Jacobian in Div
  Set yup/ydown fields for Div_par_flux()
  Use curly braces with if statements
  Fix V_dot_Grad documentation
  Use std::map::emplace to avoid naming complicated type with insert
  Add method argument to Grad2_par2
  Remove const on arguments passed by value
  Remove bracket_location() function, replace with ASSERT1
  Tidying up more location setting in derivatives
  Remove unnecessary interp_to in Grad2_par2
  Make mesh::getRegion?? const
  Add const(_iterator) overload of Region::begin/end
  Provide `getRegion` method on Fields to return the requested Region from fieldmesh
  Fix some sphinx whitespace/code blocks
  ...
Rename Mesh::coordinates -> Mesh::getCoordinates; deprecate old name
Some manual intervention required as PRs are listed in chronological
order of creation, not merge!
@ZedThree ZedThree removed the work in progress Not ready for merging label Oct 16, 2018

@bendudson bendudson left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well done, thanks everyone! Thanks to all the people who have contributed improvements and fixes to make this a really significant improvement to BOUT++. Thanks in particular to @ZedThree for coordinating this release and keeping us all in line.

@ZedThree
ZedThree merged commit 8567b2d into master Oct 17, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants