Update next with 8.1.0 release

Merged
#570 · Created  · Last updated

Merged pull request

Merged in admin/update_next_with_8.1.0 (pull request #570)

88802fc·Author: ·Closed by: ·2021-12-10

Description

No conflicts to fix!

Autogenerated message:

  • Increase nstep in fft test

  • Make two levels of benchmarking test

  • Make two levels for fields_local test

  • Increase nstep in fields_local

  • Make levels for init benchmark

  • Make bm levels in g_to_gf redist test

  • Increase level 2 test size

  • Update tests for g_to_le

  • Update g to xxf test

  • xxf to yxf test

  • Update timestep test

  • Reduce number of steps in level 2 test

  • Double nstep in timestep level 2 test

  • Remove layouts in xxf to yxf redist test

    This test is independent of g_lo layout!

  • Update readme to include benchmark levels

  • Update ffts test to take three different layouts

  • Change wdriftttp to be distribution function shaped.

    This ensures we distribute the memory associated with this, potentially large, array. This comes at the cost of using more memory at low core counts. The new approach uses less memory when nproc > nlambda. Cases that don't satisfy this may be expected to be relatively small jobs where resource requirements are less demanding.

    This approach may also help avoid a potential bug where the lambda dependent Coriolis drift is added to the totally trapped drift array. Before this commit this would "clobber" any previously set value.

  • Update utils to bring in get_git_version

  • Add some basic command line arguments

  • Add a routine to estimate the NL source error based on order comparison

  • Use the order based error check to enable timestep reduction

    Far from ideal as can currently "fight" with the traditional CFL limit checks.

  • Add missing declaration

  • Add code_dt_max to mirror code_dt_min in gs2_time.

    Also adds save_dt_max to set the maximum time step.

  • Use code_dt_max rather than dt0 when determining new time step.

    More closely mirrors treatment of minimum timestep.

  • Store maximum timestep in restart files

  • Restore maximum time step when initialising time step from restart file

  • Use dt_not_set rather than hard coded value when we can't find time variables in the restart file

  • Change how we detect issue with restoring time steps from restart file

    Now we allow per-variable failure detection so that we restore everything that we can but fall back to defaults for the variables we couldn't restore.

    We will still get netcdf error messages to indicate there has been an issue.

  • Updating NL error estimate to use variable time step coefficients

  • Revert "Update utils to bring in get_git_version"

    This reverts commit 3f53d5642b856b01454d608af0fdfdf71d5af656.

  • Move command line parsing to subroutine in gs2_main

    Use a single write statement, this makes it a bit more obvious how a potential help argument would need to be formatted

  • Only check the order based error method after specified number of steps

  • Add some comments and use the order based target timestep to set the timestep limit and reset state

  • Make some settings for order based error method be user inputs

  • Increase size of timestep benchmark

  • Revert "Increase size of timestep benchmark"

    This reverts commit d6ff3edeb3a59a0c3d405671d9b1e0a2400a6492.

  • Add expensive timestep level 3 benchmark

  • Tweak level 2 timestep benchmark to get more sweetspots

  • Merge init and time advance benchmarks into a single test

  • Delete init and timestep benchmarks that are superceded by the new benchmark

  • Add gitignore

  • Add note in README that timestep test can be skipped by setting nstep=0

  • Update get_adams_bashforth_coefficients to allow user specified maximum order

  • Update order based error estimate to use get_adams_bashforth_coefficients

  • Exclude hyper terms when istep <= 0

    This removes these terms from the response calculation. See issue #133 for some discussion.

  • Add some documentation of lgridset

  • Add some more documentation

  • Refactor lgridset to split out passing and trapped calculations

  • Refactor lgridset related code further.

    Hopefully this will help make this code easier to test and more readable

  • Remove inaccurate comments

  • Remove commented code and add some comments

  • Used passed weights array rather than module level one

  • Add a note

  • Add an integration test for new_trap_int

    Currently this fails due to the mod vpa and related cases

  • Split the new_trap_int weights calculation into two sub-domains

    Found to significantly reduce error in test cases

  • Add a high resolution tight tolerance test case

  • Use minimum of CLF/error time limit

    Ensures we don't exceed the cfl limit based on the error estimate.

  • Add functions to get the module-level config for each module

  • Add gs2_config_type::get_configs to copy all module-level configs

  • Write out the used input parameter values for GS2

  • Remove cfl scaling factor on error based time step limit

  • Add module for creating a standard header for files and output

  • Use standard_header() in various outputs

  • Fix typo in gs2_init template

  • Add file git_hash.fpp that gets recompiled on git repo changes

    This file is deliberately not in a module, so please don't add one! We want to recompile this file when the git hash or state changes, but we don't want to recompile the entire project when that happens. If this were in a module, then anything that used it would pick up a dependency and therefore need rebuilding on new commits. Instead, we just rebuild this file and link the object in at the link stage -- so the executables get relinked, but that's it. standard_header.f90 has explicit interfaces for these functions, so please use that module in order to call these function.

    A downside of having this file sort of out of the dependency tree generated by fortdep, is that we can't tell which executables depend on it. Currently, the dependency on this file needs to be added manually -- it also needs to be added to the front of the dependency list for the linker to actually see the function implementations.

  • Regenerate git_hash.f90 if not using ONE_STEP_PP

  • Add a routine to resample the output of eikcoefs onto a different theta resolution

  • Add routine to set geometry module level outputs

    from passed data. We shouldn't really need to do this but may be useful as an interim implementation.

  • Add ntheta_geometry input to allow specification of resolution in geometry calculation

  • Use new geometry routines rather than calling eikcoeffs directly

  • Add missing declarations

  • Release notes for 8.1

  • Add line wrapping

  • Add section on tests

  • Add that users can speify npassing

  • Add module for generating UUIDs

    Contains its own MT19937 implementation in order to not interact with random number generation in the rest of the code

  • Add run UUID to standard_header

  • Use parameter for length of UUID

  • Remove unused local variable

  • Increase integer kind for intermediate large values

  • Convert standard_header to a type to cache date/time and UUID

    Ensures we get a consistent time across all files/outputs where header is used

  • Make sure header is only printed once

  • Move g0 work array to dist_fn_arrays to aid reuse in other modules

    Rename to g0_tmp in the move to help distinguish from other g0 appearances throughout the code.

  • Pass in the weight distribution in flux calculation routines rather than rely on "global" arrays being allocated and set

  • Ensure we set the correct lower bound on passed array

  • Rename g0_tmp to g_work

  • Rewrite getan in terms of a routine which takes the distribution function to use.

  • Rename getan_from_g to getan_from_dfn

  • Add a routine to calculate the potentials from a given distribution function

    This routine considers the passed distribution function to be the "raw" non-adibatic distribution function, rather than the function evolved by GS2, g.

  • Add initial_condition_is_nonadiabatic_dfn input flag

    If true then we assume the initial condition specifies the initial non-adibatic distribution function, rather than the compound function evolved by GS2. If true this triggers a calculation of the consistent fields and uses these to form the function evolved by GS2.

  • Move iglo loop into invert_rhs_1

  • Replace return with cycle

  • Move constant calculations out of loop

  • Rearrange loop body to group similar parts

  • Remove some repeated logic with named variable

  • Tidy up comments

  • Give names to some more common logic

  • Make use of named logic variables to make logic a bit clearer

  • Simplify logic in one place

  • Switch is_ttp for is_not_ttp

  • Add some comments

  • Add is_passing logical

  • Add is_trapped logical

  • Try to consolidate the logic for calling self_periodic

  • Add some comments and small restructure

  • Add some minor comments

  • Add some brief documentation to invert_rhs_1

  • Remove ntgl and ntgr as used inconsistently with +/-ntgrid

  • Add a sketch of the routine structure

  • Add doc string for self_periodic

  • Bugfix: Use explicit allocation to ensure lower bound is set correctly.

  • Switch from function to subroutine to tidy up the code

  • If we haven't set ntheta_geometry then use old approach

  • Correct link formatting

  • Add pfunit test case using ntheta_geometry to calculate coefficients at higher accuracy

  • Expand existing Miller pfunit test to check more of the outputs

  • Add a helper routine to dump the current golden answers

  • Tidy up helper routine formatting

  • Correct typo

  • Use better name for lambda grid in passing grid setup

  • Do something with the error flag returned by get_weights

  • Rename al to lambda_grid when setting up trapped weights.

  • Split the trapped lambda grid into two routines for the two different methods

  • Fix typo

  • Update init_dt call in gryfx code

  • Add docstrings

  • Fix couple of typos

  • Add vspace_integration_error and exit_reason files to CLEANCOMMAND

  • Add regression test for nonadiabatic initialisation

    Note the test only just passes at this resolution/duration. However, running for longer we find that the result converges to the same result as fields_local_single_mode.in

  • Add some crude tests of calculation of potentials from initial conditions

  • Tidy up comment

  • Calculate new theta grid by interpolating in index space rather than assuming uniform spacing.

    Should hopefully allow us to capture choices such as equal_arc.

  • Update pfunit test to account for change in theta grid when resampling

  • Use periodic spline in eeq for periodic boundary values

  • Add some comments for consideration

  • Ensure thetab and r_bound deallocated with other arrays

  • Adopt periodic spline in deq::bound

  • Ensure thetab and r_bound deallocated in deq

  • Update and expand efit pfunit golden answer test

  • Update utils commit

  • Try to work out if we should drop the last point in periodic spline setup

  • Update utils commit to get bug fix for splines

  • Drop the duplicate point in boundary spline for geqdsk files

  • Drop the duplicate point in boundary spline for dfit files

  • Enable file_safety_check in new diagnostics

    Reuse subroutine across old and new diagnostics

  • Improve error messages if restart files are not writable

    • Include actual name of restart directory

    • Include error message from system

    Note that the system error message may not be very useful in the case where the directory doesn't exist, because we're actually checking we can write a file. Fortran doesn't seem to have a portable, intrinsic method of checking directories

  • Add changelog for 8.1

  • Correct type in collision_model documentation

  • Ensure max_vel initialised when dt_cfl initialised

  • Pull cfl calculation out of add_nl and into add_explicit

    This puts both the cfl and error based time step limit calculations next to each other.

  • Restructure code slightly to reduce duplication

  • Add use_cfl_limit flag to enable users to disable the cfl check

  • Only reduce the max_vel if we have at least one check active

  • Simplify logic slightly.

  • Add ingen output reporting on timestep control methods

  • Expand comment slightly

  • Ensure code_dt_cfl is set even if no checks are active

  • Remove name

  • Start to restructure test clean targets

  • Fix restarting test and ensure test_name set

  • Remove CLEANCOMMAND and use targets instead to specify extra files for tests to clean up

  • Ensure we remove all created files

  • Ensure benchmarks are cleaned with correct target

  • Tweak how we set GK_HEAD_DIR and report the value in test_make

  • Add rule to rebuild Makefile.utils if not present

    Basically just for running make from individual test directories, in which case GK_HEAD_DIR is not set when we include tests/Makefile.tests_common which would lead to errors without this line. Ideally we might instead set GK_HEAD_DIR correctly here.

  • Add some helper targets which allow us to build individual tests by running make in the test directory

  • Ensure GK_HEAD_UTILS is set in Makefile.tests_common

  • Small tweak to avoid double backslash

  • Move test_level to Makefiles.tests_common

  • Fix GK_HEAD_DIR definition

  • Make use of GK_HEAD_DIR rather than relative path in local_test recipe

  • Try auto-enabling colour output from make

  • Move definition of processName so that sub-make invocations have access to this

  • Move definition of processName so that sub-make invocations have access to this

  • Add a comment explaining defaulting of WITH_COLOR

  • Make local_test target a bit quieter

  • Add reset escape code

  • Make use of existing escape code when colouring test output

    Now the test colouring is automatically disabled in we're not using colouring for the rest of make. This should allow us to remove NO_TEST_COLOURS as a separate option for controlling test colour output.

  • Move default TEST_LEVEL back into tests_and_benchmarks but add fallback option

    Fallback option in tests_common ensures test_level is set even if we run make in the test directory and defaults to the current tests level such that the individual case will be active by default.

  • Default QUIET if not set in tests_common

  • Add clean as synonym for clean_individual_test

  • Remove duplicated dependency between individual and local test

  • Tweak approach to specifying local test files for clean

    Reduces duplication and number of lines involved in setting the files to remove

  • Fix typo

  • Make sure a few of our helper codes are built by default

  • Add breaking changes document

  • Fix for fact SLEPc removed FEAST for v3.12 and v3.13

  • Switch src/diagnostics/generate_diagnostics_ascii.rb for python

  • Fix typo in routine name

  • Replace ruby generator for diagnostics_create_and_write with python version

  • Remove ruby generator for diagnostics_create_and_write

  • Convert generate_read_chease from ruby to python

  • Add missing _chease

  • Avoid some duplication

  • Correct generated allocations

  • Replace ruby with python in simpledataio_read generation

  • Replace ruby with python in simpledataio_write generation

  • Remove filtering of real promotion flags

  • Minor tweaks to avoid special treatment of real promotion

  • Minor makefile tidy up

  • Remove special recipes no longer required as we don't need special handling for double promotion

  • Remove a bit of unused code from makefiles

  • Fix name in tests makefile

  • Fix name in pfunit tests

  • Fix typo, density->temperature

  • Add changes missing from PR 448 required to register cgyro option

  • Port/update dist_fn namelist docstrings

  • Update comment in generate_read_chease.py

  • Replace ruby with python in overrides generation

  • Remove generated gs2_init and ruby generator

  • Update the gs2_init template file

  • Replace ruby with python in gs2_init generator

  • Update docstrings for init_g_knobs namelist

  • Update docstrings for parameter_scan_knobs namelist

  • Change name of included files to fit with fortdep assumptions

    Make gs2_init use preprocessor includes rather than fortran includes to aid fortdep.

  • Update namelist docstrings for theta_grid_gridgen_knobs

    Mostly not helpful because they are not documented anywhere, and so their meaning needs to be determined by understanding griden, which is non-trivial

  • Update knobs namelists

  • Update layouts namelist

  • Fix makefile for generate gs2_init dependencies

  • Bugfix for going up/down

  • Tweaks to theta_grid_eik_knobs namelist docstrings

  • Add link to geometry spec docs in init_g_knobs docstring

  • Tweak theta_grid_file_knobs namelist docstring

  • Correct l2norm calculation for complex variables

  • Add "restart" as a synonym for ginit_option = "many"

  • Move most of ginit_option docs out into standalone page

  • Fix formatting and links in init_g_knobs docstrings

  • Add/fix some procedure docstrings in init_g

  • Remove some commented out code and fix some formatting in init_g

  • Fix overzealous re-formatting

  • Fix LaTeX in normalisations docstrings

  • Fix typo in run_parameters

  • Be more specific in a couple of namelist docstrings

  • Add an option to find eigenvalues of the time derivative operator rather than the time advance one.

  • Add a test for the field equation consistency

  • Add gitignore

  • Bugfix for flipped case

  • Rename ddt to analyse_ddt_operator

  • Make the condition number a property of the supercell type

  • Add ability to save condition number alongside response matrix dump

  • Make fields_local save condition number when dumping response matrix

  • Add option to output condition number at GK_VERBOSITY=1

  • Remove CLEANCOMMAND

  • Finish renaming ddt to analyse_ddt_operator

  • Fix eigenvalue timer reporting

  • Make sure INCLUDES is always passed to preprocessor commands

    For ONE_STEP_PP builds this is already achieved as INCLUDES is included in F90FLAGS

  • Add helper script to compile and build petsc and slepc

  • Add slepc to gfortran 10 CI job

  • Use correct script name

  • Switch from lapack to openblas

  • Add mention of python for code generation in readme

  • Add some flags to give more control over building pfunit

  • Start to add CI caching.

    Separate cache per job, disabled for most jobs currently.

  • Try to install pfunit in cached area

  • Try to enable pfunit tests in gfortran 10 build

  • Revert "Try to enable pfunit tests in gfortran 10 build"

    This reverts commit feef706e6de3afbb907a3385a943833a8becb77a.

    Infrastructure for using pfunit v4 not ready for CI

  • Reduce number of pfunit build jobs in CI to account for actual hardware provided

  • Move code for setting up intel compiler into script to tidy gitlab yaml

  • Add some timing to intel build script

  • Don't report the trapped/passing error breakdown for Radau-Gauss grids

  • Remove unused use

  • Make sure that code_dt_cfl is initialised.

    Existing code in nonlinear_terms:add_explicit attempting to do this does not appear to trigger.

  • Add file git_hash.fpp that gets recompiled on git repo changes

    This file is deliberately not in a module, so please don't add one! We want to recompile this file when the git hash or state changes, but we don't want to recompile the entire project when that happens. If this were in a module, then anything that used it would pick up a dependency and therefore need rebuilding on new commits. Instead, we just rebuild this file and link the object in at the link stage -- so the executables get relinked, but that's it. git_version_mod.f90 has explicit interfaces for these functions, so please use that module in order to call these functions.

    A downside of having this file sort of out of the dependency tree generated by fortdep, is that we can't tell which executables depend on it. Currently, the dependency on this file needs to be added manually -- it also needs to be added to the front of the dependency list for the linker to actually see the function implementations.

  • Add function for git version from git describe

  • Add some rudimentary build configuration output to command line args

  • Only match release tags; print git version in test_make

  • Add module-level config instance getter to generator script

  • Add utils uuid branch

  • Small tweak to account for change in type of gexp_1 with SHMEM

  • Replace uuid module with utils version

  • Fix wrong argument in parse_command_line

  • Move build config output to build_config module

  • Alternative approach, putting breaking changes in changelog

  • Only use the git version to check for rebuilding of git_hash.fpp

  • Add runtime error for wrong command line flags

  • Force immediate evaluation of GIT_STATE

  • Remove refs to file_safety_check not working in new diagnostics

  • Make write_heating a synonym of write_hrate, deprecate latter

    Fixes #125

  • Use write_heating everywhere instead of write_hrate

  • Make write_hrate private to base config module

  • Expand argument documentation

  • Fix very minor typo

  • Add integrated test to check that our cfl and error based time step adjustment can stabilise a case

  • Add an example of a test expected to fail

  • Add some documentation around the response matrices and condition number

  • Fix relative links

  • Fix Ford interceptor script to be compatible with Ford 6.1

  • Add comment about known issue with in_memory

  • Make sure nstep_measure is at least 2

  • Don't reset istep_last when reading parameters in nonlinear_terms

    This avoids an issue whereby each time we change the timestep we reset istep_last to zero, therefore misidentifying repeat calls to add_explicit on the same iteration.

  • Add pytest-based test for command line arguments

  • Update to latest utils

  • Update to latest utils

  • Immediately evaluate make variable

  • Guard create-test-virtualenv recipe in case python not present

  • Use sh instead of bash in create-test-virtualenv

    Wider support

  • Use $(call message*) for make messages

  • Add folder issue to changelog

  • Finish removing uuid module

  • Remove duplicated variable in antenna

    no_driver was essentially a synonym for ant_off or not having the namelist present in the input file.

    This removes the module level (private) variable ant_off in favour of (existing public) no_driver. The input variable still exists.

    We now also set ant_off = no_driver in the config object for consistency

  • Try to fix in_memory for nonlinear runs -- ensure we copy explicit source terms as well

  • Addition of new option " hzero_passing_electron" in knobs default value false. when true the non-adiabatic piece of the distribution function for passing electrons in non-zonal modes is set to 0 these changes are not yet compatible with the collision operator.

  • Additions of 2 methods of making the collision operator consistent with a non-adiabatic response h=0 for passing electrons this is an intermediate check in before a final clean version the methods checked in with this version are controlled with hzero_passing_electron_collisions,hzero_passing_electron_collisions_matrix in knobs, default false. hzero_passing_electron_collisions, operates by changing the tri-diagonal solver in the pitch angle scattering routines. hzero_passing_electron_collisions_matrix operates by changing the pitch angle scattering matrix coefficients without changing the solver. In the 2nd option it was necessary to change g_adjust to enforce that h=0 when transforming from g -> h this means that now fphi < 0 is inconsistent with this feature

  • Fix linking issue with write_default_input_file

    Needs git_hash.o

  • Fix bug in theta_grid_params::get_theta_grid_params_config

  • Commit of cleaned version of the non-zonal non-adiabatic electron response h=0 feature. This feature is controlled by 2 separate logicals in the species_knobs namelist

    hzero_passing_electron = .true. (default.false.) Sets the electron response h =0 in the collision as part of the algorithm and in g_adjust when going from g_gs2 to h (g_wesson in the note in g_adjust). This change restricts fphi >= 0 if it is not already restricted to be so.

    hzero_passing_electron_collisions_matrix = .true. (default.false.) Modifies the collision operator for electron pitch angle scattering so that the pitch angle scattering piece of the collision operator vanishes for the passing particles (i.e.the tri-diagonal solver uses the identity matrix for passing particles) and the trapped particles use a 0 boundary condition at the trapped-passing boundary.

    In this we regard wfb point in phase space as passing since the parallel boundary condition can propagate h=0 for the world's fattest banana.

  • for ms_pgelres:

    changes for the hzero_passing_electron option

    The previous method did not modify the response matrix. This method modifies the calculation of the potential. The response of the passing non-zonal electrons is known to be g = - J_0 e phi/ T F_0, this is enforced in the calculation of potential in the field solve, and in the calculation of the initial condition. This behaviour is consistent with the previous modifications.

    Use the flags

    hzero_passing_electron =.true. hzero_passing_electron_collisions_matrix = .true. hzero_passing_electron_response = .true.

    in species_knobs to enable the h = 0 for non-zonal passing electron model. To enforce that the initial condition is always made consistent, regardless of the value of force_maxwell_reinit, set

    hzero_passing_electron_response_init = .true.

    in species_knobs.

  • Replace anon with nonmaxwell_corr

  • Replace another anon

  • Change intents to allow side effect

  • Fix variable names

  • Conditionally ensure_single_val on gamtot_hzero

  • Reduce duplication in collisions

  • Remove unused use statement

  • Add method documentation

  • Avoid touching generated code

  • Remove unnecessary call to init_antenna_data

    We now don't call it in the first place if no_driver

  • Add hybrid_electron species type

    Aim to use this instead of hzero_* flags to enable hybrid electron treatment

  • Avoid possible bug -- make sure is always set if required

  • Make use of is_electron_species rather than comparing against electron_species

  • Add is_hybrid_electron_species method

  • Add has_hybrid_electron_species method

  • Add is_ion_species method

  • Make has_hybrid_electron_species method public

    Also tidy up related functions slightly

  • Remove hzero_* input flags and instead set from presence of hybrid_electron

    Keep separate flags for now to aid testing

  • Fix typo

  • Start to add a test of the timestep change code

  • Ensure that initialized in gs2_init defaults to false.

    This ensures we read the init_knobs namelist.

  • Add some more timestep change test cases but don't run them yet as we expect them to fail

  • Turn off timestep_change test if we don't have netcdf

    We may want to be more selective once the in_memory approach is working and only disable those tests which need to write restart files.

  • Expand timestep change test to also test that explicit source behaves as expected following an attempt to repeat the current step.

  • Remove warnings about in_memory now that we have a fix

  • Try to be more selective about what we disable when we don't have netcdf

  • Enable the in_memory version of timestep_change test

    Expect this to fail until PR #490 or equivalent is merged

  • Disable timestep_change test if no fft library

  • Revert "Disable timestep_change test if no fft library"

    This reverts commit 783101f2831adf7346408f6f08bf87c596ebfef7.

  • Add a bit more information when allocation fails

  • Show the error file if test fails

  • Make intel CI run in debug mode

  • Revert "Show the error file if test fails"

    This reverts commit 4e1048deca874a4bb50da0506525b8b2de18ec3b.

  • Change gfarray into an allocatable array from an automatic array

    Different compilers treat automatic arrays in different ways. For example gfortran puts them on the heap whilst intel puts them on the stack. The gfarray array is likely to be large and can cause problems with intel when there is a limit to the stack size.

    This change avoids the memory requirements associated with gfarray when it is not required.

  • Tweak header comment format

  • Remove some more large gf related automatic arrays

  • Update utils commit to bring in intel bug fix

  • Update utils to get bug fix to bug fix

  • Partially revert 7bc0025f

  • Improve the formatting of the config namelist output

  • Turn off DEBUG in intel builds again

  • Make problem size smaller in timestep change test

  • Remove unused namelists and disable unused diagnostics

  • Improve/fix tolerance in slab_itg test and update target answer

  • Increase number of time steps to get slightly more reliable results

  • Specify a seed to help make run more reproducible

  • Improve comment

  • Add a version of the slab_itg test which adds in hybrid electrons

    We'd expect this case to give us results identical to the original adiabatic electron version

  • CI: Print version and build-config

  • Workaround for Cray bug which didn't like type renaming on use

  • Use is_hybrid_electron_species in appropriate places

  • Add test for writing used inputs

  • Use git version in standard header

  • Fix used inputs test for no-deps build; require netcdf

  • Add indexed version of get_module_config to generator

  • Rename standard_header module to match filename

  • Add method to coordinate reporting on condition numbers

    Moves all reporting to proc0 to avoid issues with error_unit not being defined on other processors

  • Add comment about performance

  • Print a better warning message if Python not found

  • Send which pytest errors to /dev/null; allow setting name of exe

  • Try to fix CI failures by ensuring array initialised

  • Add file descriptions to headers of output files

  • Avoid error from invalid floating point operation

    If theta_grid_knobs::equilibrium_option isn't eik, then neither surfarea nor dvdrhon are set, resulting in an invalid floating point operation error. grhoavg is already calculated, so just use that. It will still be undefined if eik isn't used, but at least we won't be dividing by NaNs.

    Another solution would be to only set these variables if eik is used

  • Apply initialisation fix to gf_fields_local as well

  • Ensure D_v and D_eta are always initialised

    This avoids the use of uninitialised variables in dist_fn:get_heating when not using certain hyper models

  • Try to avoid divide by zero in estimate_error

  • Initialise outputs in getan_nogath

    This avoids a potential bug in using uninitialised data elsewhere

  • Add a Debug CI case which forces initialisation of values and watches for invalid operations

  • Initialise user_dt_cfl and code_dt_cfl to dt_not_set

    Avoids potential uses of uninitialised data

  • Initialise moments if in replay mode

  • Initialised phi_corr_2pi if in replay mode

  • Turn on flags

  • Guard against some potential uses of uninitialised file units

  • Don't call new diagnostics clean up if using old diagnostics

    Avoids possible attempt to deallocate unallocated array in diagnostics tests

  • Ensure big is initialised prior to use.

  • Leave do_write_parity as soon as possible

  • Make sure thetaShift and beta_0 are set when setting surface properties for testing

  • Make theta_grid provide surfarea and dvdrhon

  • Update utils to get redistribute bug fix

  • Attmept to fix bug in crpgrad not being initialised

    Avoids potential uninitialised data being used for nperiod>1

    This could impact runs which use the Coriolis drift (Cdrift)

  • Remove jacob from eik_get_grids and salpha_get_grids interface as not set

    We did not (although perhaps could) set jacob in these routines despite it being marked as intent(out). This could lead to the use of uninitialised data.

  • Make sure ctmp is initialised

    We need to initialise the receiving buffer in g2le redistibutes as currently our redistribute does not populate every element in the receiver. Presumably this is because these buffers have a dimension negrid+1 whilst the sending layout only has negrid energy points.

  • Make sure g2le receiving buffer is initialised

  • Fix bug in check_g2le where we did not loop over the energy dimension

  • Use ulim_alloc rather than ulim_proc when reversing array

    Avoids issues when running at large processor count and we may not have ulim_proc==ulim_alloc everywhere

  • Enable debug for gfortran 5 build

  • Remove DEBUG from debug build and rename

  • Don't return from save/read restart if n_elements is zero

    This could avoid potential hangs when built with parallel netcdf which call barrier after this early return

  • Avoid n_elements becoming negative

  • Remove n_elements > 0 guards

  • Removes a number of preprocessor directives through introduction of runtime parameter.

    This can make the code a bit more readable

  • Remove duplicated include

  • Simplify treatment of SHMEM directive

  • Simplify some of the utility routines

  • Make sure kt_grids_knobs wnml output is a valid namelist

  • Use proc0 rather than testing iproc

  • Simplify handling of applying known suffix in some cases

  • Pull out duplicated code into a function

  • Expand use of get_file_proc to tidy up the code

  • Remove duplicate period

  • Bug prevention -- ensure we set the correct initialized flag when leaving the gs2_save_for_restart routine

  • Remove initialized flags in gs2_save

    These were always supposed to be reset to false but their presence could lead to potential bugs should they ever be left in a true state.

  • Remove duplicated calls to error_unit

  • Tidy up handling of optional arguments

  • Try to reduce scope of variables

  • Small reduction in memory use by reusing temporary arrays

  • Make save/restore routines deallocate module level arrays to reduce peak memory slightly

  • Reduce some duplication

  • Add some comments

  • Remove unused exit_in argument to gs2_save_for_restart

  • Remove optional distfn argument in gs2_save_for_restart

    This only resulted in .dfn being added to the file name and fileopt already provides a way to achieve this.

  • Reduce scope of abort_on_restart_fail

  • Make sure betaprim is initialised

    This can be used to give a smart default for the beta_prime_input value so it is important that this is initialised.

  • Make sure we don't use uninitialised gryfx parameter

    This avoids potential bugs in non-box runs where the gryfx function will return an uninitialised flag to indicate if we're in a gryfx run. If this returns true we would end up changing the time step, number of steps and collision frequency.

  • Fix typo

  • Make nonlinear timestep change case a little smaller

  • Reduce cyclone_itg NL test case size

  • Dont always print blank line in close_module_test

    Avoids large numbers of blank lines when running tests on large processor count

  • Try to make gs2_diagnostics test better resolved

  • Remove change to new_trap_int weights calculation for 8.1

  • Remove associated tests

  • Actually remove tests from Makefile

  • Try to reduce the amount of code to represent hybrid electrons

    Set h_non_adiabatic to zero in the linear parallel solve (i.e. gnew = -adj). Remove special treatment in getan. Remove gamtot_hzero from field equations.

    Whilst these changes successfully reproduce a linear collision scan test case very well need to test this further, particularly non-linearly.

  • Make sure save_many and read_many are always initialised

  • Accept any length string in call to set_restart_file

  • Truncate set_restart_file argument if required (and warn)

  • Add some comments about c_rate type

  • Guard against using c_rate based on heating flag

  • Don't allocate c_rate if heating is false

  • Add some comments about memory cost of extended correlation diagnostic

  • Add a couple of more common files to the clean test list

  • Make runcommand_expect_fail also capture error stream

  • Add a few tests of our input file handling

    Some of these are currently failing either because of bugs in our handling (invalid_input_name_indexed) or because of differences between my assumptions and the actual handling in the code (circular dependencies, missing inputs)

  • Fix incorrect namelist names

  • Update utils commit to pull in changes to file_utils

  • Update config generator to account for changes in indexed namelist handling

  • Update namelist read handling

  • Provide a means to pass extra flags to the pfunit cmake command

  • Make coverage job use more recent image (and compiler)

    Fixes issue with coverage job hanging

  • Update utils commit

  • Make sure vnm_init is always initialised

  • Change vnmult initialisation to -1

  • Always initialise vnmult to the value of vnm_init

    This should make sure that restarted jobs set vnmult to the value stored in the restart file rather than defaulting to 1 as would happen otherwise.

  • Add vnmult to the set of things saved/restored during a timestep change

  • Make sure vnmult is restored during a timestep change before the collision operator is reinitialised.

  • Correct logic

  • Update utils commit to bring in fixes/changes

  • If pFUnit not found make error message give some more suggestions for how the user can fix this.

  • Don't initialise input file if automatically initialising file utils

    This is required because we now abort if the input file isn't found

  • Small cleanup around check if geometry needs to initialise fileutils

  • Create new netCDF files using the netCDF-4 model

    Files created using previous versions of GS2 (and using the old diagnostics) will have been created with the "netCDF classic" model. These files can still be opened with netCDF, and simulations can still be restarted using those files.

  • Note required versions of FFTW and Python

    And that HDF5 is only required for linking when using parallel netcdf

    [skip ci]

  • Add test case with no input file specified

  • Update utils commit

  • Add hyper_in_initialisation flag

    See PR #528 for more

  • Use hyper_in_initialisation flag

  • Try to account for change in MPI flag name for pfunit between v3 and v4

  • Add declaration of hyper_in_initialisation

  • Remove quotes around variable

  • Add check_frequency test to functional_tests

  • Add some tests of hybrid electrons

  • Relax tolerance to account for slight differences between old and new diagnostic calculations

  • Remove contribution to conservation terms from hybrid-passing electrons

  • Slightly tweak the logic for detecting adiabatic-passing treatment

    Really we should probably wrap this logic up in a single function

  • Add tools for estimating current and peak memory usage.

    Dump estimates at end of run

  • Add fallback message if can't determine memory use

  • Fix for markdown nested in HTML for namelist docs

    Python-markdown 3.3 changed how the md_in_html extension worked, and it now requires markdown='1' attribute on any HTML tag if it or its children contain markdown. This attribute is ignored for python-markdown < 3.3, so should always be safe to include

  • Fix for Ford "alias" not present in 6.0.0

  • Use ensure_netcdf_var_exists in gs2_save::gs2_save_for_restart

    This reduces boilerplate code and will enable us to easily enable compression etc. with a change in just one place.

  • Use ensure_netcdf_dim_exists

  • Update fields read to get memory usage estimates.

    This now seems to better match the output of valgrind's massif tool

  • Use var/dim exists wrappers in save_response

  • Use var/dim exists wrappers in eigenmode files

  • Remove unused use entries

  • Update utils commit to get access to netcdf compression

  • Add make flag to default netcdf compression to on

  • Enable netcdf compression in onestep ci build

  • Update golden answers due to fix in conservation terms from PR #535

  • Remove extra call to get_init_field in ginit

  • Add function to determine if current point is a passing hybrid electron which should be skipped or not.

  • Use logic wrapper to determine when dealing with passing hybrid electron

  • Remove fixed hzero flags in favour of use of functions

  • Try to respect h=0 for hybrid electrons in initial conditions

    Currently this is only implemented when the initial conditions are directly h (i.e. initial_condition_is_nonadiabatic_dfn = .true.)

  • Fix logic inversion init_g::flae

  • Remove some unused use'd variables

  • Remove unused use

  • Avoid using hard-coded species type values

    Also rename Slowing to Tracer

  • Add hybrid type to species report

  • Add a warning if using hybrid electrons but not initialising h directly

  • Add comment

  • Add missing and

  • Move duplicated code into subroutine

  • Improve documentation

  • Respect nonad_zero = .false. in linked boundary conditions

  • Guard writing used inputs file on rank0

    Also pull out into separate function

  • Rename PARALLEL define to SIMPLEDATAIO_HAS_PARALLEL_NETCDF in order to avoid potential side effects by defining PARALLEL

  • Remove unused variables

  • Change format type

  • Specify kind in conversion to avoid warnings

  • Remove unused variables in generator

  • Fix generator to remove unused variables

  • Put gridgen config parameters in order

  • Add skip_gridgen flag

  • Make use of skip_gridgen flag

  • Add note about skip_gridgen impose assumptions

  • Disable memory usage message by default and enable through make flag.

  • Reorder declarations to follow standard more strictly

  • Replace non-standard kind declaration

  • Replace non-standard kind declaration

  • Fix non-standard declarations and declaration order

  • Update utils commit to fetch fix for uuid_mod

  • Make sure use_sub is false if the x dimension is split

    This avoids potential out of bounds accesses

  • Add missing g_lo%

  • Try to make use_sub logic clearer

  • Don't communicate forbidden region in g_lo <-> le_lo redistribute

  • Duplicate code for saving/restoring kx_shift for theta0_shift

    This should address issue #163 although may lead to warnings when attempting to restart from restart files generated prior to this commit which do not contain theta0_shift

  • Make sure ingen respects npmax input

  • Fix typo

  • Use named variable for repeated logic

  • Cleanup treatment of optional and remove commented lines

  • Add comment on shift/jump calculation

  • Leave exb_shear early if no jumps

  • Add a comment about use of redistributes

  • Communicate both sigma at once in exb_shear (flux tube branch)

  • Communicate both sigma at once in exb_shear (ballooning space branch)

  • Fix typo

  • Update utils to get mpi timers and report these at end of run

  • Remove commented out code

  • Report redistribute timer breakdown in time report

  • Add vparknob used to scale vparallel

  • Note that hybrid electrons are considered experimental in input documentation

  • Add an ingen warning if using hybrid electrons

  • Add comment about incompatibility of hybrid model and EM simulations

  • Move hybrid electron EM warning to run_parameters to avoid circular dependency

  • Add random_sine initial condition.

    Motivation is to provide an initial condition which will satisfy our parallel boundary condition.

  • Reduce max_mode limit from ntheta/4 to ntheta/8

    This avoids sharp oscillations

  • Swap order of loops such that changing max_mode doesn't change the random numbers for existing mode numbers for fixed seed

  • Make sure we actually sum the modes

  • Change mode loop to include even function contributions

  • Force ky=kx=0 mode to zero in random_sine

  • Fix typo

  • Make sure random_sine respects reality

  • If either nx or ny are zero then we cannot setup the transforms so detect this and abort with a helpful message

    This avoids hitting a possible seg-fault/divide by zero

  • Refactor loop body slightly in order to make it easier to switch out

  • Time calls to add_explicit_terms

  • Time calls to vspace_derivatives

  • Report time spent in collisions and nonlinear terms

    Note the collisions time will include time spent in collisions during the initialisation phase as well as advance

  • Try to work around variable quoting

  • Change quote type to try to make sure flags get passed correctly

  • Update utils to current 8.1-RC now dependent features merged

  • Split out mpi related packages to aid changing this

  • Update standard test case to F35 and gfortran 11

  • Update Makefiles commit to get gcc regex fix for version >= 11

  • Update gfortran10 build to v11 and use mpich

    Also enables pfunit tests in this build

  • Update CI build name

  • Fix logic inversion

  • Move field timer out of getfield_local to call site

    Needed to more fairly capture the field update done separately in some situations.

  • Mover field timer out of getfield to call site.

    Enables us to capture the field update step as well for fairness.

  • Record fraction of field solve time spent in MPI

  • Report field solve mpi time

  • Don't restrict time_messsage calls to proc0

  • Make sure fields gf local timers match other implementations

  • Update utils commit

  • Write time at which run finishes

  • Add missing use statements

  • Update utils to 8.1-RC

  • Fix version string if exactly on tag

  • Fix new diagnostics not using netCDF4 file format

    Diagnostics test has changed because netCDF4 can have issues with trying to read a file while another process has it open for writing

  • Write some metadata to netCDF files

  • Pull redistribute time out into top level entry in timer output

  • Remove explicit save parameters

  • Fix writing the netCDF version

  • Add some special handling for always building a serial version of mp

  • Add tools for making targets serial and apply to ingen and other serial codes

  • Tweak method for adding git_hash.o to dependencies for consistency

  • Move fft_save_wisdom handling to target makefile and use consistent treatment

  • Update utils commit to fix mp serial build

  • Update utils commit to get fix for running serial ingen

  • Write standard metadata as global attributes

    This is more in line with various metadata conventions

  • Add "title" and "Conventions" to netCDF metadata

  • Remove some misleading metadata from new diagnostics

  • Make sdatio_(end|recommence)_definitions no-ops with netCDF4

  • Remove commented out code and minor indentation fixes

  • Add an internal debug flag to re-enable communication of forbidden region

  • Add brackets around logic to help clarity

  • Remove unused variable from simpledataio

  • Add "comment", "references" metadata to netcdf

  • Add MODDIR to some dependenices to avoid warnings when preprocessing with gfortran

  • Move create_metadata to separate file to avoid circular dependency

  • Add standard metadata to more netCDF files

  • Update release notes slightly

  • Show change log and release notes on website

  • Fix typo

  • Reference couple of bug fixes and fix typo

  • Avoid clobbering parallel mp.mod with serial version

  • Update utils commit to get mp changes for serial build

  • Make building serial tools as serial opt in for now

  • Add comment about HDF5 file locking

  • Add comment about HDF5 file locking in CHANGELOG

  • Update utils commit to 8.1-RC

  • Add breaking changes from release notes into changelog

  • Replace dodgy character

  • Update DOI and release number in citation.cff

  • Update makefiles and utils to release versions

  • Update changelog

  • Fix changelog formatting

  • Update DOI in readme

    [skip-ci]

 

0 attachments

0 comments

Loading commits...