-
Notifications
You must be signed in to change notification settings - Fork 42
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* release/0.32.0: (24 commits) Version 0.32.0 Add function SolidBodyRotation Serial distribution to use entire mesh on every partition (#114) Adapt StructuredMeshGenerator to allow creation of meshes where some mpi tasks have no elements or nodes Allow interpolation to partitions without points or elements Remove assertion checking for empty mesh partition in NodeColumns (see #108) Wrap-around the longitudes in the polygon locator (#108) Github Actions: Prevent homebrew from auto-updating Github Actions: Prevent homebrew from auto-updating Github Actions: Update macos-11 to macos-12 (latest available) ATLAS-373 Enable gaussian latitudes computation for very high resolution, improving memory requirement with orders of magnitude Cosmetic change Add Fortran constructors for ShiftedLonLat, ShiftedLon, ShiftedLat grids ATLAS-372: Add missing header file Fixup previous commit, fixing segmentation fault Support more functionspaces for interpolation with FiniteElement, UnstructuredBilinearLonLat, GridBoxMethod, (K)NearestNeighbour Rename StructuredMeshGenerator option 3d -> three_dimensional, but still backward compatible Fix interpolation method UnstructuredBilinearLonLat for failing triangular elements Add missing CellColumns::halo() function Fix Mesh::operator bool() to reflect empty mesh ...
- Loading branch information
Showing
53 changed files
with
2,836 additions
and
285 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
0.31.1 | ||
0.32.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/* | ||
* (C) Copyright 2013 ECMWF. | ||
* | ||
* This software is licensed under the terms of the Apache Licence Version 2.0 | ||
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. | ||
* In applying this licence, ECMWF does not waive the privileges and immunities | ||
* granted to it by virtue of its status as an intergovernmental organisation | ||
* nor does it submit to any jurisdiction. | ||
*/ | ||
|
||
#include "atlas/functionspace/BlockStructuredColumns.h" | ||
|
||
namespace atlas { | ||
namespace functionspace { | ||
|
||
// ---------------------------------------------------------------------------- | ||
|
||
BlockStructuredColumns::BlockStructuredColumns(): FunctionSpace(), functionspace_(nullptr) {} | ||
|
||
BlockStructuredColumns::BlockStructuredColumns(const FunctionSpace& functionspace): | ||
FunctionSpace(functionspace), | ||
functionspace_(dynamic_cast<const detail::BlockStructuredColumns*>(get())) {} | ||
|
||
BlockStructuredColumns::BlockStructuredColumns(const Grid& grid, const eckit::Configuration& config): | ||
FunctionSpace(new detail::BlockStructuredColumns(grid, config)), | ||
functionspace_(dynamic_cast<const detail::BlockStructuredColumns*>(get())) {} | ||
|
||
BlockStructuredColumns::BlockStructuredColumns(const Grid& grid, const grid::Partitioner& partitioner, | ||
const eckit::Configuration& config): | ||
FunctionSpace(new detail::BlockStructuredColumns(grid, partitioner, config)), | ||
functionspace_(dynamic_cast<const detail::BlockStructuredColumns*>(get())) {} | ||
|
||
BlockStructuredColumns::BlockStructuredColumns(const Grid& grid, const grid::Distribution& distribution, | ||
const eckit::Configuration& config): | ||
FunctionSpace(new detail::BlockStructuredColumns(grid, distribution, config)), | ||
functionspace_(dynamic_cast<const detail::BlockStructuredColumns*>(get())) {} | ||
|
||
BlockStructuredColumns::BlockStructuredColumns(const Grid& grid, const Vertical& vertical, const eckit::Configuration& config): | ||
FunctionSpace(new detail::BlockStructuredColumns(grid, vertical, config)), | ||
functionspace_(dynamic_cast<const detail::BlockStructuredColumns*>(get())) {} | ||
|
||
BlockStructuredColumns::BlockStructuredColumns(const Grid& grid, const Vertical& vertical, const grid::Partitioner& partitioner, | ||
const eckit::Configuration& config): | ||
FunctionSpace(new detail::BlockStructuredColumns(grid, vertical, partitioner, config)), | ||
functionspace_(dynamic_cast<const detail::BlockStructuredColumns*>(get())) {} | ||
|
||
BlockStructuredColumns::BlockStructuredColumns(const Grid& grid, const grid::Distribution& distribution, const Vertical& vertical, | ||
const eckit::Configuration& config): | ||
FunctionSpace(new detail::BlockStructuredColumns(grid, distribution, vertical, config)), | ||
functionspace_(dynamic_cast<const detail::BlockStructuredColumns*>(get())) {} | ||
|
||
std::string BlockStructuredColumns::checksum(const FieldSet& fieldset) const { | ||
return functionspace_->checksum(fieldset); | ||
} | ||
|
||
std::string BlockStructuredColumns::checksum(const Field& field) const { | ||
return functionspace_->checksum(field); | ||
} | ||
|
||
// ---------------------------------------------------------------------------- | ||
|
||
} // namespace functionspace | ||
} // namespace atlas |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
/* | ||
* (C) Copyright 2013 ECMWF. | ||
* | ||
* This software is licensed under the terms of the Apache Licence Version 2.0 | ||
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. | ||
* In applying this licence, ECMWF does not waive the privileges and immunities | ||
* granted to it by virtue of its status as an intergovernmental organisation | ||
* nor does it submit to any jurisdiction. | ||
*/ | ||
#pragma once | ||
|
||
#include <functional> | ||
#include <type_traits> | ||
|
||
#include "atlas/functionspace/FunctionSpace.h" | ||
#include "atlas/functionspace/StructuredColumns.h" | ||
#include "atlas/functionspace/detail/BlockStructuredColumns.h" | ||
|
||
namespace atlas { | ||
namespace functionspace { | ||
|
||
// ------------------------------------------------------------------- | ||
|
||
class BlockStructuredColumns : public FunctionSpace { | ||
public: | ||
class Block; | ||
public: | ||
BlockStructuredColumns(); | ||
BlockStructuredColumns(const FunctionSpace&); | ||
BlockStructuredColumns(const Grid&, const eckit::Configuration& = util::NoConfig()); | ||
BlockStructuredColumns(const Grid&, const grid::Partitioner&, const eckit::Configuration& = util::NoConfig()); | ||
BlockStructuredColumns(const Grid&, const grid::Distribution&, const eckit::Configuration& = util::NoConfig()); | ||
BlockStructuredColumns(const Grid&, const Vertical&, const eckit::Configuration& = util::NoConfig()); | ||
BlockStructuredColumns(const Grid&, const Vertical&, const grid::Partitioner&, | ||
const eckit::Configuration& = util::NoConfig()); | ||
BlockStructuredColumns(const Grid&, const grid::Distribution&, const Vertical&, | ||
const eckit::Configuration& = util::NoConfig()); | ||
|
||
static std::string type() { return detail::BlockStructuredColumns::static_type(); } | ||
|
||
operator bool() const { return valid(); } | ||
bool valid() const { return functionspace_; } | ||
|
||
idx_t size() const { return functionspace_->size(); } | ||
// idx_t sizeOwned() const { return functionspace_->sizeOwned(); } | ||
// idx_t sizeHalo() const { return functionspace_->sizeHalo(); } | ||
idx_t levels() const { return functionspace_->levels(); } | ||
|
||
const Vertical& vertical() const { return functionspace_->vertical(); } | ||
|
||
const StructuredGrid& grid() const { return functionspace_->grid(); } | ||
|
||
std::string checksum(const FieldSet&) const; | ||
std::string checksum(const Field&) const; | ||
|
||
idx_t index(idx_t blk, idx_t rof) const { return functionspace_->index(blk, rof); } | ||
// idx_t i_begin(idx_t j) const { return functionspace_->i_begin(j); } | ||
// idx_t i_end(idx_t j) const { return functionspace_->i_end(j); } | ||
// idx_t j_begin() const { return functionspace_->j_begin(); } | ||
// idx_t j_end() const { return functionspace_->j_end(); } | ||
idx_t k_begin() const { return functionspace_->k_begin(); } | ||
idx_t k_end() const { return functionspace_->k_end(); } | ||
idx_t nproma() const { return functionspace_->nproma(); } | ||
idx_t nblks() const { return functionspace_->nblks(); } | ||
|
||
Field xy() const { return functionspace_->xy(); } | ||
Field partition() const { return functionspace_->partition(); } | ||
Field global_index() const { return functionspace_->global_index(); } | ||
Field remote_index() const { return functionspace_->remote_index(); } | ||
Field index_i() const { return functionspace_->index_i(); } | ||
Field index_j() const { return functionspace_->index_j(); } | ||
Field ghost() const { return functionspace_->ghost(); } | ||
|
||
const Block block(idx_t jblk) const { | ||
return Block(functionspace_->block_begin(jblk), functionspace_->block_size(jblk)); | ||
} | ||
|
||
size_t footprint() const { return functionspace_->footprint(); } | ||
|
||
class Block { | ||
public: | ||
Block(idx_t begin, idx_t size) : begin_(begin), size_(size) {} | ||
idx_t index(idx_t j) const { return begin_ + j; }; | ||
idx_t size() const { return size_; } | ||
private: | ||
idx_t begin_; | ||
idx_t size_; | ||
}; | ||
|
||
private: | ||
const detail::BlockStructuredColumns* functionspace_; | ||
void setup(const Grid& grid, const Vertical& vertical, const grid::Distribution& distribution, | ||
const eckit::Configuration& config); | ||
}; | ||
|
||
// ------------------------------------------------------------------- | ||
|
||
|
||
} // namespace functionspace | ||
} // namespace atlas |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.