Git Product home page Git Product logo

dgswemv2's Issues

CircleCI build broken

The Circle CI build process is broken. It seems that there is some confusion regarding which C++ compiler to use. Building should be revamped explicitly specifying which compiler to use for all dependencies.

const Comm

communicator argument in preprocessor functions should be const

Serialization buffers can be smaller

Right now the serialization buffer writes the entire RK-stages into the buffer. Technically, we only need input looking things to be serialized.

swe: inputs should set problem parameters

Right now the inputs in swe yaml-node the input file are ignored. I think there are probably a few scenarios. Right now there are only global variables, which we could replicate by just making the swe_inputs class a static member of the problem type. This is probably closest to the spirit of the current implementation

Alternatively, we could make it a proper member variable of the problem class, but this I think might put more strain on the API.

Error in input file generated by partitioner

When running the partitioner without any output node, the partitioner produces a malformatted input_parallelized.15 file. Presumably, this is an error in the input_parameters::WriteTo function.

CI can be sped-up

  • Unit tests should occur at the same time as parallel correctness tests
  • Manufactured solution timestep should be increased to make the execution time on par with the parallel weirs test

Error in `SWE::Data::resize(uint)`

If I call resize when this->state.size() is zero, the unsigned arithmetic causes the value to flip to unsigned real max.

But resize also doesn't recreate the number of states passed as the argument. i.e. it creates nstates+1 stages. I think this would be more clear to just pass nstates+1 as the arguement, rather than letting the function secretly add an extra stage.

Error writing output when `ouptut/` doesn't exist

At the moment, if an output/ directory doesn't exist based on where you're running the simulation, no output will get written.

It might be better to include an option in the input file to specify the output location.

Implement semistatic load balancer

Based on previous performance results, a semi-static load balancer seems to be the first thing to try to help improve parallel performance.

Adcirc mesh file error checks

We need to add a method to check that the adcirc mesh is well formed.
This should include:

  • no missing edges
  • all elements have positive jacobian(?)

Not sure if this is everything, but it seems like a start

Parallel correctness test for load balancing missing

We need to add a load balancing test similar to scripts/correctness/test_parallel_correctness.sh to check that dynamically load balanced implementations are giving identical results to parallel implementations.

Unnecessary kernel in Problem class?

Is there a reason for this function?

template <typename RawBoundaryType>
static void create_distributed_boundaries_kernel(ProblemMeshType&,
                                                 std::tuple<>&,
                                                 std::map<uint, std::map<uint, RawBoundaryType>>&);

It seems like this function never gets called, only the version that also calls a communicator argument seems to get called.

Need additional weir testing

We need a functional test for weirs to ensure parallel correctness. Test should probably mimic something along the test in scripts/correctness/test_parallel_correctness.sh

Features needed for serializing meshes

These are features that need to be built into HPXSimulationUnit::load to ensure that the simulation can continue after the HPXSimulationUnit has been migrated to another directory

  • writer log file needs to be reopened
  • Interfaces need to be reconnected
  • Distributed buffers need to get reset by calling Problem::create_distributed_boundaries_kernel
  • Need to add serialization for the spherical projection

Invalid iterator reading

Currently problem/SWE/kernels_preprocessor/swe_pre_create_bound.hpp and problem/SWE/kernels_preprocessor/swe_pre_create_inface.hpp are erasing the iterators of raw_boundaries that they are looping over. This invalidates the current iterator and causes an invalid read in the system.

Not all ADCIRC meshes have generic boundaries

I'm unsure if this a hold-over from the dgswem code. However, not all valid ADCIRC meshes have generic boundaries. Thus we need to check the input file stream to make sure that reading the generic boundaries is valid.

Unnecessary linking for swe_definitions

We should move the following

namespace Global {
	static constexpr double g = 9.81;
	static constexpr double Cf = 0.001;
}

enum BoundaryConditions : unsigned char {
	land = 0,
	tidal = 1,
	internal = INTERNAL
};

out of swe_definitions. Or better yet give the problem class it's own header file. It seems wrong that I have to link to SWE::Data to run the LLLF flux test

Load balancing framework missing

I want to introduce the load balancing frame work similar to how it was introduce in the LBL load balancing paper.

  • Need to build a polymorphic base class for Tile-, Locality- and World-models
  • The simplest load balancer should move tiles around randomly, and be used in #59
  • We should implement a semi-static load balancer.

Features for partitioner

Partitioner needs to be able to take care of mesh files with weir boundary conditions.
If possible: can we keep neighbor element IDs for distributed boundaries instead of assigning them as DEFAULT_ID after partitioning.

Set-up docker

It would be nice to be able to ship a container with everything inside to allow people to play around with the code more easily.

Weir test does not provide consistent results

Taking the L2-Norm of the solution at the final time for the weir test case introduced in #78 , we find that L2 errors are not agreeing. The current values are

L2 Errors for each build type:
L2 error for serial: 2278.232235133
L2 error for hpx: 2280.0290280987
L2 error for ompi: 2280.0290280987

which is a relatively significant deviation in value.

Missing `InputParameters` test

A small test needs to be added that checks that all the necessary nodes are defined and helpful error exceptions get thrown when they aren't.

OMPI Sim units

find a way to emplace_back a sim unit instead of using unique_ptr

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.