musica 0.7.2__tar.gz → 0.7.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of musica might be problematic. Click here for more details.
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/release.yml +4 -5
- {musica-0.7.2 → musica-0.7.3}/CITATION.cff +1 -1
- {musica-0.7.2 → musica-0.7.3}/CMakeLists.txt +1 -1
- {musica-0.7.2 → musica-0.7.3}/PKG-INFO +1 -1
- {musica-0.7.2 → musica-0.7.3}/cmake/dependencies.cmake +2 -2
- {musica-0.7.2 → musica-0.7.3}/configs/chapman/species.json +1 -1
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile +0 -1
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile.fortran-gcc +1 -1
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile.fortran-gcc.integration +0 -1
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile.memcheck +0 -1
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile.mpi +0 -1
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile.mpi_openmp +0 -1
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile.openmp +0 -1
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile.python +0 -1
- {musica-0.7.2 → musica-0.7.3}/fortran/test/fetch_content_integration/CMakeLists.txt +1 -1
- {musica-0.7.2 → musica-0.7.3}/fortran/test/fetch_content_integration/test_micm_api.F90 +8 -13
- {musica-0.7.2 → musica-0.7.3}/fortran/test/fetch_content_integration/test_tuvx_api.F90 +161 -12
- {musica-0.7.2 → musica-0.7.3}/fortran/tuvx/CMakeLists.txt +2 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/tuvx/grid.F90 +1 -1
- {musica-0.7.2 → musica-0.7.3}/fortran/tuvx/profile.F90 +1 -1
- musica-0.7.3/fortran/tuvx/radiator.F90 +361 -0
- musica-0.7.3/fortran/tuvx/radiator_map.F90 +180 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/tuvx/tuvx.F90 +43 -8
- {musica-0.7.2 → musica-0.7.3}/include/musica/micm.hpp +2 -0
- {musica-0.7.2 → musica-0.7.3}/include/musica/tuvx/grid.hpp +5 -3
- {musica-0.7.2 → musica-0.7.3}/include/musica/tuvx/grid_map.hpp +3 -3
- {musica-0.7.2 → musica-0.7.3}/include/musica/tuvx/profile.hpp +3 -2
- {musica-0.7.2 → musica-0.7.3}/include/musica/tuvx/profile_map.hpp +3 -2
- musica-0.7.3/include/musica/tuvx/radiator.hpp +263 -0
- musica-0.7.3/include/musica/tuvx/radiator_map.hpp +93 -0
- {musica-0.7.2 → musica-0.7.3}/include/musica/tuvx/tuvx.hpp +9 -0
- {musica-0.7.2 → musica-0.7.3}/python/test/test_chapman.py +6 -7
- {musica-0.7.2 → musica-0.7.3}/python/wrapper.cpp +6 -0
- {musica-0.7.2 → musica-0.7.3}/src/micm/micm.cpp +2 -1
- {musica-0.7.2 → musica-0.7.3}/src/packaging/CMakeLists.txt +2 -0
- {musica-0.7.2 → musica-0.7.3}/src/test/unit/micm/micm_c_api.cpp +13 -26
- {musica-0.7.2 → musica-0.7.3}/src/test/unit/tuvx/tuvx_c_api.cpp +337 -0
- {musica-0.7.2 → musica-0.7.3}/src/tuvx/CMakeLists.txt +4 -0
- musica-0.7.3/src/tuvx/interface.F90 +147 -0
- musica-0.7.3/src/tuvx/interface_grid.F90 +236 -0
- {musica-0.7.2 → musica-0.7.3}/src/tuvx/interface_grid_map.F90 +75 -75
- {musica-0.7.2 → musica-0.7.3}/src/tuvx/interface_profile_map.F90 +4 -4
- musica-0.7.3/src/tuvx/interface_radiator.F90 +324 -0
- musica-0.7.3/src/tuvx/interface_radiator_map.F90 +177 -0
- musica-0.7.3/src/tuvx/radiator.cpp +268 -0
- musica-0.7.3/src/tuvx/radiator_map.cpp +180 -0
- {musica-0.7.2 → musica-0.7.3}/src/tuvx/tuvx.cpp +19 -0
- musica-0.7.2/src/tuvx/interface.F90 +0 -118
- musica-0.7.2/src/tuvx/interface_grid.F90 +0 -237
- {musica-0.7.2 → musica-0.7.3}/.clang-format +0 -0
- {musica-0.7.2 → musica-0.7.3}/.clang-tidy +0 -0
- {musica-0.7.2 → musica-0.7.3}/.dockerignore +0 -0
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/clang_format.yml +0 -0
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/clang_tidy.yml +0 -0
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/docker.yml +0 -0
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/fetch_content_integration.yml +0 -0
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/gh_pages.yml +0 -0
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/mac.yml +0 -0
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/pep8.yml +0 -0
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/pip.yml +0 -0
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/ubuntu.yml +0 -0
- {musica-0.7.2 → musica-0.7.3}/.github/workflows/windows.yml +0 -0
- {musica-0.7.2 → musica-0.7.3}/.gitignore +0 -0
- {musica-0.7.2 → musica-0.7.3}/.gitmodules +0 -0
- {musica-0.7.2 → musica-0.7.3}/LICENSE +0 -0
- {musica-0.7.2 → musica-0.7.3}/README.md +0 -0
- {musica-0.7.2 → musica-0.7.3}/cmake/FindSphinx.cmake +0 -0
- {musica-0.7.2 → musica-0.7.3}/cmake/SetDefaults.cmake +0 -0
- {musica-0.7.2 → musica-0.7.3}/cmake/cmake_uninstall.cmake.in +0 -0
- {musica-0.7.2 → musica-0.7.3}/cmake/musica.settings.in +0 -0
- {musica-0.7.2 → musica-0.7.3}/cmake/musicaConfig.cmake.in +0 -0
- {musica-0.7.2 → musica-0.7.3}/cmake/summary.cmake +0 -0
- {musica-0.7.2 → musica-0.7.3}/cmake/test_util.cmake +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/TS1/config.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/TS1/initial_conditions.csv +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/TS1/reactions.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/TS1/species.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/analytical/config.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/analytical/reactions.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/analytical/species.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/carbon_bond_5/config.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/carbon_bond_5/initial_conditions.csv +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/carbon_bond_5/reactions.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/carbon_bond_5/species.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/chapman/config.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/chapman/initial_conditions.csv +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/chapman/reactions.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/robertson/config.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/robertson/initial_conditions.csv +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/robertson/reactions.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/configs/robertson/species.json +0 -0
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile.docs +0 -0
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile.fortran-intel +0 -0
- {musica-0.7.2 → musica-0.7.3}/docker/Dockerfile.fortran-nvhpc +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/Makefile +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/Software Development Plan.pdf +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/make.bat +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/requirements.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/_static/custom.css +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/_static/favicon/favicon.ico +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/_static/index_api.svg +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/_static/index_contribute.svg +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/_static/index_getting_started.svg +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/_static/index_user_guide.svg +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/api/index.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/conf.py +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/contributing/index.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/getting_started/getting_started.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/getting_started/installation.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/getting_started/overview.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/index.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/references.bib +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/tutorial/chapter0.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/tutorial/chapter1.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/tutorial/chapter2.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/tutorial/tutorial.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/user_guide/fortran_c.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/user_guide/model_interface.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/docs/source/user_guide/user_guide.rst +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/micm.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/packaging/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/test/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/test/fetch_content_integration/test_get_micm_version.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/test/fetch_content_integration/test_micm_box_model.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/test/tutorial/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/test/tutorial/demo.f90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/test/unit/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/test/unit/tuvx.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/test/unit/tuvx_mpi.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/test/unit/tuvx_openmp.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/test/unit/util.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/tuvx/grid_map.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/tuvx/profile_map.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/fortran/util.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/include/musica/component_versions.hpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/include/musica/util.hpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/include/musica/version.hpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/pyproject.toml +0 -0
- {musica-0.7.2 → musica-0.7.3}/python/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/python/test/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/python/test/test_analytical.py +0 -0
- {musica-0.7.2 → musica-0.7.3}/python/test/tuvx.py +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/component_versions.cpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/micm/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/packaging/modulefile.lua.in +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/test/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/test/unit/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/test/unit/component_versions.cpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/test/unit/micm/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/test/unit/micm/micm.cpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/test/unit/tuvx/CMakeLists.txt +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/tuvx/grid.cpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/tuvx/grid_map.cpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/tuvx/interface_profile.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/tuvx/profile.cpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/tuvx/profile_map.cpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/tuvx/tuvx_util.F90 +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/util.cpp +0 -0
- {musica-0.7.2 → musica-0.7.3}/src/version.cpp.in +0 -0
- {musica-0.7.2 → musica-0.7.3}/valgrind.supp +0 -0
|
@@ -2,10 +2,9 @@ name: Publish Python Package
|
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
workflow_dispatch:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# - published
|
|
5
|
+
release:
|
|
6
|
+
types:
|
|
7
|
+
- published
|
|
9
8
|
|
|
10
9
|
jobs:
|
|
11
10
|
build_sdist:
|
|
@@ -67,7 +66,7 @@ jobs:
|
|
|
67
66
|
runs-on: ubuntu-latest
|
|
68
67
|
environment:
|
|
69
68
|
name: pypi
|
|
70
|
-
url: https://pypi.org/p
|
|
69
|
+
url: https://pypi.org/p/musica
|
|
71
70
|
permissions:
|
|
72
71
|
id-token: write
|
|
73
72
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
cmake_minimum_required(VERSION 3.21)
|
|
2
2
|
|
|
3
3
|
# must be on the same line so that pyproject.toml can correctly identify the version
|
|
4
|
-
project(musica-distribution VERSION 0.7.
|
|
4
|
+
project(musica-distribution VERSION 0.7.3)
|
|
5
5
|
|
|
6
6
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH};${PROJECT_SOURCE_DIR}/cmake)
|
|
7
7
|
set(CMAKE_USER_MAKE_RULES_OVERRIDE ${CMAKE_MODULE_PATH}/SetDefaults.cmake)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: musica
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.3
|
|
4
4
|
Summary: MUSICA is a Python library for performing computational simulations in atmospheric chemistry.
|
|
5
5
|
Home-page: https://wiki.ucar.edu/display/MUSICA/MUSICA+Home
|
|
6
6
|
Author-Email: Matthew Dawsom <mattdawson@ucar.edu>, Jiwon Gim <jiwongim@ucar.edu>, David Fillmore <fillmore@ucar.edu>, Kyle Shores <kshores@ucar.edu>
|
|
@@ -51,7 +51,7 @@ endif()
|
|
|
51
51
|
if (MUSICA_ENABLE_MICM AND MUSICA_BUILD_C_CXX_INTERFACE)
|
|
52
52
|
|
|
53
53
|
set_git_default(MICM_GIT_REPOSITORY https://github.com/NCAR/micm.git)
|
|
54
|
-
set_git_default(MICM_GIT_TAG
|
|
54
|
+
set_git_default(MICM_GIT_TAG 6b1c58a9be14095e3f3c6df403c91c4e800f23de)
|
|
55
55
|
|
|
56
56
|
FetchContent_Declare(micm
|
|
57
57
|
GIT_REPOSITORY ${MICM_GIT_REPOSITORY}
|
|
@@ -75,7 +75,7 @@ if (MUSICA_ENABLE_TUVX AND MUSICA_BUILD_C_CXX_INTERFACE)
|
|
|
75
75
|
set(TUVX_INSTALL_INCLUDE_DIR ${MUSICA_INSTALL_INCLUDE_DIR} CACHE STRING "" FORCE)
|
|
76
76
|
|
|
77
77
|
set_git_default(TUVX_GIT_REPOSITORY https://github.com/NCAR/tuv-x.git)
|
|
78
|
-
set_git_default(TUVX_GIT_TAG
|
|
78
|
+
set_git_default(TUVX_GIT_TAG 674ee1e72853bb44d23c36602fa73c955b2f021d)
|
|
79
79
|
|
|
80
80
|
FetchContent_Declare(tuvx
|
|
81
81
|
GIT_REPOSITORY ${TUVX_GIT_REPOSITORY}
|
|
@@ -13,7 +13,6 @@ RUN dnf -y update \
|
|
|
13
13
|
git \
|
|
14
14
|
hdf5-devel \
|
|
15
15
|
json-devel \
|
|
16
|
-
lapack-devel \
|
|
17
16
|
lcov \
|
|
18
17
|
libcurl-devel \
|
|
19
18
|
m4 \
|
|
@@ -38,6 +37,7 @@ RUN cd musica \
|
|
|
38
37
|
&& cmake -S . \
|
|
39
38
|
-B build \
|
|
40
39
|
-D CMAKE_BUILD_TYPE=${BUILD_TYPE} \
|
|
40
|
+
-D MUSICA_GIT_TAG=${MUSICA_GIT_TAG} \
|
|
41
41
|
-D MUSICA_BUILD_FORTRAN_INTERFACE=ON \
|
|
42
42
|
-D MUSICA_ENABLE_MEMCHECK=ON \
|
|
43
43
|
&& cd build \
|
|
@@ -30,7 +30,7 @@ contains
|
|
|
30
30
|
real(c_double) :: pressure
|
|
31
31
|
real(c_double) :: air_density
|
|
32
32
|
integer(c_int) :: num_concentrations, num_user_defined_reaction_rates
|
|
33
|
-
real(c_double), dimension(
|
|
33
|
+
real(c_double), dimension(4) :: concentrations
|
|
34
34
|
real(c_double), dimension(3) :: user_defined_reaction_rates
|
|
35
35
|
character(len=256) :: config_path
|
|
36
36
|
integer(c_int) :: solver_type
|
|
@@ -52,8 +52,8 @@ contains
|
|
|
52
52
|
temperature = 272.5
|
|
53
53
|
pressure = 101253.4
|
|
54
54
|
air_density = pressure / ( GAS_CONSTANT * temperature )
|
|
55
|
-
num_concentrations =
|
|
56
|
-
concentrations = (/ 0.
|
|
55
|
+
num_concentrations = 4
|
|
56
|
+
concentrations = (/ 0.4, 0.8, 0.01, 0.02 /)
|
|
57
57
|
num_user_defined_reaction_rates = 3
|
|
58
58
|
user_defined_reaction_rates = (/ 0.1, 0.2, 0.3 /)
|
|
59
59
|
|
|
@@ -109,21 +109,16 @@ contains
|
|
|
109
109
|
ASSERT( logical( bool_value ) )
|
|
110
110
|
|
|
111
111
|
string_value = micm%get_species_property_string( "O3", "missing property", error )
|
|
112
|
-
ASSERT( error%is_error( MICM_ERROR_CATEGORY_SPECIES,
|
|
113
|
-
MICM_SPECIES_ERROR_CODE_PROPERTY_NOT_FOUND ) )
|
|
112
|
+
ASSERT( error%is_error( MICM_ERROR_CATEGORY_SPECIES, MICM_SPECIES_ERROR_CODE_PROPERTY_NOT_FOUND ) )
|
|
114
113
|
double_value = micm%get_species_property_double( "O3", "missing property", error )
|
|
115
|
-
ASSERT( error%is_error( MICM_ERROR_CATEGORY_SPECIES,
|
|
116
|
-
MICM_SPECIES_ERROR_CODE_PROPERTY_NOT_FOUND ) )
|
|
114
|
+
ASSERT( error%is_error( MICM_ERROR_CATEGORY_SPECIES, MICM_SPECIES_ERROR_CODE_PROPERTY_NOT_FOUND ) )
|
|
117
115
|
int_value = micm%get_species_property_int( "O3", "missing property", error )
|
|
118
|
-
ASSERT( error%is_error( MICM_ERROR_CATEGORY_SPECIES,
|
|
119
|
-
MICM_SPECIES_ERROR_CODE_PROPERTY_NOT_FOUND ) )
|
|
116
|
+
ASSERT( error%is_error( MICM_ERROR_CATEGORY_SPECIES, MICM_SPECIES_ERROR_CODE_PROPERTY_NOT_FOUND ) )
|
|
120
117
|
bool_value = micm%get_species_property_bool( "O3", "missing property", error )
|
|
121
|
-
ASSERT( error%is_error( MICM_ERROR_CATEGORY_SPECIES,
|
|
122
|
-
MICM_SPECIES_ERROR_CODE_PROPERTY_NOT_FOUND ) )
|
|
118
|
+
ASSERT( error%is_error( MICM_ERROR_CATEGORY_SPECIES, MICM_SPECIES_ERROR_CODE_PROPERTY_NOT_FOUND ) )
|
|
123
119
|
deallocate( micm )
|
|
124
120
|
micm => micm_t( "configs/invalid", solver_type, num_grid_cells, error )
|
|
125
|
-
ASSERT( error%is_error( MICM_ERROR_CATEGORY_CONFIGURATION,
|
|
126
|
-
MICM_CONFIGURATION_ERROR_CODE_INVALID_FILE_PATH ) )
|
|
121
|
+
ASSERT( error%is_error( MICM_ERROR_CATEGORY_CONFIGURATION, MICM_CONFIGURATION_ERROR_CODE_INVALID_FILE_PATH ) )
|
|
127
122
|
ASSERT( .not. associated( micm ) )
|
|
128
123
|
|
|
129
124
|
write(*,*) "[test micm fort api] Finished."
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
!
|
|
4
4
|
program combined_tuvx_tests
|
|
5
5
|
use iso_c_binding
|
|
6
|
-
use musica_tuvx, only: tuvx_t, grid_map_t, grid_t, profile_map_t, profile_t
|
|
6
|
+
use musica_tuvx, only: tuvx_t, grid_map_t, grid_t, profile_map_t, profile_t, &
|
|
7
|
+
radiator_map_t, radiator_t
|
|
7
8
|
use musica_util, only: assert, error_t
|
|
8
9
|
|
|
9
10
|
implicit none
|
|
@@ -55,22 +56,36 @@ contains
|
|
|
55
56
|
|
|
56
57
|
subroutine test_tuvx_solve()
|
|
57
58
|
|
|
58
|
-
type(tuvx_t),
|
|
59
|
-
type(error_t)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
type(grid_t),
|
|
63
|
-
type(profile_map_t),
|
|
64
|
-
type(profile_t),
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
real*8
|
|
59
|
+
type(tuvx_t), pointer :: tuvx
|
|
60
|
+
type(error_t) :: error
|
|
61
|
+
character(len=256) :: config_path
|
|
62
|
+
type(grid_map_t), pointer :: grids
|
|
63
|
+
type(grid_t), pointer :: grid, height_grid, wavelength_grid
|
|
64
|
+
type(profile_map_t), pointer :: profiles
|
|
65
|
+
type(profile_t), pointer :: profile, profile_copy
|
|
66
|
+
type(radiator_map_t), pointer :: radiators
|
|
67
|
+
type(radiator_t), pointer :: radiator, radiator_copy
|
|
68
|
+
real*8, dimension(5), target :: edges, edge_values, temp_edge
|
|
69
|
+
real*8, dimension(4), target :: midpoints, midpoint_values, layer_densities, temp_midpoint
|
|
70
|
+
real*8 :: temp_real
|
|
71
|
+
integer :: num_vertical_layers, num_wavelength_bins
|
|
72
|
+
real*8, dimension(3,2), target :: optical_depths, temp_od
|
|
73
|
+
real*8, dimension(3,2), target :: single_scattering_albedos, temp_ssa
|
|
74
|
+
real*8, dimension(3,2,1), target :: asymmetry_factors, temp_asym
|
|
68
75
|
|
|
69
76
|
edges = (/ 1.0, 2.0, 3.0, 4.0, 5.0 /)
|
|
70
77
|
midpoints = (/ 15.0, 25.0, 35.0, 45.0 /)
|
|
71
78
|
edge_values = (/ 10.0, 20.0, 30.0, 40.0, 50.0 /)
|
|
72
79
|
midpoint_values = (/ 15.0, 25.0, 35.0, 45.0 /)
|
|
73
80
|
layer_densities = (/ 2.0, 4.0, 1.0, 7.0 /)
|
|
81
|
+
num_vertical_layers = 3
|
|
82
|
+
num_wavelength_bins = 2
|
|
83
|
+
optical_depths(:,1) = (/ 30.0, 20.0, 10.0 /)
|
|
84
|
+
optical_depths(:,2) = (/ 70.0, 80.0, 90.0 /)
|
|
85
|
+
single_scattering_albedos(:,1) = (/ 300.0, 200.0, 100.0 /)
|
|
86
|
+
single_scattering_albedos(:,2) = (/ 700.0, 800.0, 900.0 /)
|
|
87
|
+
asymmetry_factors(:,1,1) = (/ 3.0, 2.0, 1.0 /)
|
|
88
|
+
asymmetry_factors(:,2,1) = (/ 7.0, 8.0, 9.0 /)
|
|
74
89
|
|
|
75
90
|
config_path = "examples/ts1_tsmlt.json"
|
|
76
91
|
|
|
@@ -312,12 +327,146 @@ contains
|
|
|
312
327
|
ASSERT_EQ( temp_edge(3), 36.0 )
|
|
313
328
|
ASSERT_EQ( temp_edge(4), 38.0 )
|
|
314
329
|
ASSERT_EQ( temp_edge(5), 40.0 )
|
|
315
|
-
|
|
330
|
+
|
|
331
|
+
radiators => tuvx%get_radiators( error )
|
|
332
|
+
ASSERT( error%is_success() )
|
|
333
|
+
|
|
334
|
+
radiator => radiators%get( "foo_radiator", error )
|
|
335
|
+
ASSERT( .not. error%is_success() )
|
|
336
|
+
deallocate( radiator )
|
|
337
|
+
deallocate( radiators )
|
|
338
|
+
|
|
339
|
+
radiators =>radiator_map_t( error )
|
|
340
|
+
ASSERT( error%is_success() )
|
|
341
|
+
|
|
342
|
+
height_grid => grid_t( "height", "km", num_vertical_layers, error )
|
|
343
|
+
wavelength_grid => grid_t( "wavelength", "nm", num_wavelength_bins, error )
|
|
344
|
+
radiator => radiator_t( "foo_radiator", height_grid, wavelength_grid, error )
|
|
345
|
+
ASSERT( error%is_success() )
|
|
346
|
+
|
|
347
|
+
call radiator%set_optical_depths( optical_depths, error )
|
|
348
|
+
ASSERT( error%is_success() )
|
|
349
|
+
|
|
350
|
+
call radiator%get_optical_depths( temp_od, error )
|
|
351
|
+
ASSERT( error%is_success() )
|
|
352
|
+
ASSERT_EQ( temp_od(1,1), 30.0 )
|
|
353
|
+
ASSERT_EQ( temp_od(2,1), 20.0 )
|
|
354
|
+
ASSERT_EQ( temp_od(3,1), 10.0 )
|
|
355
|
+
ASSERT_EQ( temp_od(1,2), 70.0 )
|
|
356
|
+
ASSERT_EQ( temp_od(2,2), 80.0 )
|
|
357
|
+
ASSERT_EQ( temp_od(3,2), 90.0 )
|
|
358
|
+
|
|
359
|
+
call radiator%set_single_scattering_albedos( single_scattering_albedos, error )
|
|
360
|
+
ASSERT( error%is_success() )
|
|
361
|
+
|
|
362
|
+
call radiator%get_single_scattering_albedos( temp_ssa, error )
|
|
363
|
+
ASSERT( error%is_success() )
|
|
364
|
+
ASSERT_EQ( temp_ssa(1,1), 300.0 )
|
|
365
|
+
ASSERT_EQ( temp_ssa(2,1), 200.0 )
|
|
366
|
+
ASSERT_EQ( temp_ssa(3,1), 100.0 )
|
|
367
|
+
ASSERT_EQ( temp_ssa(1,2), 700.0 )
|
|
368
|
+
ASSERT_EQ( temp_ssa(2,2), 800.0 )
|
|
369
|
+
ASSERT_EQ( temp_ssa(3,2), 900.0 )
|
|
370
|
+
|
|
371
|
+
call radiator%set_asymmetry_factors( asymmetry_factors, error )
|
|
372
|
+
ASSERT( error%is_success() )
|
|
373
|
+
|
|
374
|
+
call radiator%get_asymmetry_factors( temp_asym, error )
|
|
375
|
+
ASSERT( error%is_success() )
|
|
376
|
+
ASSERT_EQ( temp_asym(1,1,1), 3.0 )
|
|
377
|
+
ASSERT_EQ( temp_asym(2,1,1), 2.0 )
|
|
378
|
+
ASSERT_EQ( temp_asym(3,1,1), 1.0 )
|
|
379
|
+
ASSERT_EQ( temp_asym(1,2,1), 7.0 )
|
|
380
|
+
ASSERT_EQ( temp_asym(2,2,1), 8.0 )
|
|
381
|
+
ASSERT_EQ( temp_asym(3,2,1), 9.0 )
|
|
382
|
+
!
|
|
383
|
+
call radiators%add( radiator, error )
|
|
384
|
+
radiator_copy => radiators%get( "foo_radiator", error )
|
|
385
|
+
|
|
386
|
+
optical_depths(:,:) = 0.0
|
|
387
|
+
single_scattering_albedos(:,:) = 0.0
|
|
388
|
+
asymmetry_factors(:,:,:) = 0.0
|
|
389
|
+
|
|
390
|
+
call radiator_copy%get_optical_depths( optical_depths, error )
|
|
391
|
+
ASSERT( error%is_success() )
|
|
392
|
+
ASSERT_EQ( optical_depths(1,1), 30.0 )
|
|
393
|
+
ASSERT_EQ( optical_depths(2,1), 20.0 )
|
|
394
|
+
ASSERT_EQ( optical_depths(3,1), 10.0 )
|
|
395
|
+
ASSERT_EQ( optical_depths(1,2), 70.0 )
|
|
396
|
+
ASSERT_EQ( optical_depths(2,2), 80.0 )
|
|
397
|
+
ASSERT_EQ( optical_depths(3,2), 90.0 )
|
|
398
|
+
|
|
399
|
+
call radiator_copy%get_single_scattering_albedos( single_scattering_albedos, error )
|
|
400
|
+
ASSERT( error%is_success() )
|
|
401
|
+
ASSERT_EQ( single_scattering_albedos(1,1), 300.0 )
|
|
402
|
+
ASSERT_EQ( single_scattering_albedos(2,1), 200.0 )
|
|
403
|
+
ASSERT_EQ( single_scattering_albedos(3,1), 100.0 )
|
|
404
|
+
ASSERT_EQ( single_scattering_albedos(1,2), 700.0 )
|
|
405
|
+
ASSERT_EQ( single_scattering_albedos(2,2), 800.0 )
|
|
406
|
+
ASSERT_EQ( single_scattering_albedos(3,2), 900.0 )
|
|
407
|
+
|
|
408
|
+
call radiator_copy%get_asymmetry_factors( asymmetry_factors, error )
|
|
409
|
+
ASSERT( error%is_success() )
|
|
410
|
+
ASSERT_EQ( asymmetry_factors(1,1,1), 3.0 )
|
|
411
|
+
ASSERT_EQ( asymmetry_factors(2,1,1), 2.0 )
|
|
412
|
+
ASSERT_EQ( asymmetry_factors(3,1,1), 1.0 )
|
|
413
|
+
ASSERT_EQ( asymmetry_factors(1,2,1), 7.0 )
|
|
414
|
+
ASSERT_EQ( asymmetry_factors(2,2,1), 8.0 )
|
|
415
|
+
ASSERT_EQ( asymmetry_factors(3,2,1), 9.0 )
|
|
416
|
+
|
|
417
|
+
optical_depths(:,1) = (/ 90.0, 80.0, 70.0 /)
|
|
418
|
+
optical_depths(:,2) = (/ 75.0, 85.0, 95.0 /)
|
|
419
|
+
single_scattering_albedos(:,1) = (/ 900.0, 800.0, 700.0 /)
|
|
420
|
+
single_scattering_albedos(:,2) = (/ 750.0, 850.0, 950.0 /)
|
|
421
|
+
asymmetry_factors(:,1,1) = (/ 9.0, 8.0, 7.0 /)
|
|
422
|
+
asymmetry_factors(:,2,1) = (/ 5.0, 4.0, 3.0 /)
|
|
423
|
+
|
|
424
|
+
call radiator_copy%set_optical_depths( optical_depths, error )
|
|
425
|
+
call radiator_copy%set_single_scattering_albedos( single_scattering_albedos, error )
|
|
426
|
+
call radiator_copy%set_asymmetry_factors( asymmetry_factors, error )
|
|
427
|
+
ASSERT( error%is_success() )
|
|
428
|
+
|
|
429
|
+
optical_depths(:,:) = 0.0
|
|
430
|
+
single_scattering_albedos(:,:) = 0.0
|
|
431
|
+
asymmetry_factors(:,:,:) = 0.0
|
|
432
|
+
|
|
433
|
+
call radiator%get_optical_depths( optical_depths, error )
|
|
434
|
+
ASSERT( error%is_success() )
|
|
435
|
+
ASSERT_EQ( optical_depths(1,1), 90.0 )
|
|
436
|
+
ASSERT_EQ( optical_depths(2,1), 80.0 )
|
|
437
|
+
ASSERT_EQ( optical_depths(3,1), 70.0 )
|
|
438
|
+
ASSERT_EQ( optical_depths(1,2), 75.0 )
|
|
439
|
+
ASSERT_EQ( optical_depths(2,2), 85.0 )
|
|
440
|
+
ASSERT_EQ( optical_depths(3,2), 95.0 )
|
|
441
|
+
|
|
442
|
+
call radiator%get_single_scattering_albedos( single_scattering_albedos, error )
|
|
443
|
+
ASSERT( error%is_success() )
|
|
444
|
+
ASSERT_EQ( single_scattering_albedos(1,1), 900.0 )
|
|
445
|
+
ASSERT_EQ( single_scattering_albedos(2,1), 800.0 )
|
|
446
|
+
ASSERT_EQ( single_scattering_albedos(3,1), 700.0 )
|
|
447
|
+
ASSERT_EQ( single_scattering_albedos(1,2), 750.0 )
|
|
448
|
+
ASSERT_EQ( single_scattering_albedos(2,2), 850.0 )
|
|
449
|
+
ASSERT_EQ( single_scattering_albedos(3,2), 950.0 )
|
|
450
|
+
|
|
451
|
+
call radiator%get_asymmetry_factors( asymmetry_factors, error )
|
|
452
|
+
ASSERT( error%is_success() )
|
|
453
|
+
ASSERT_EQ( asymmetry_factors(1,1,1), 9.0 )
|
|
454
|
+
ASSERT_EQ( asymmetry_factors(2,1,1), 8.0 )
|
|
455
|
+
ASSERT_EQ( asymmetry_factors(3,1,1), 7.0 )
|
|
456
|
+
ASSERT_EQ( asymmetry_factors(1,2,1), 5.0 )
|
|
457
|
+
ASSERT_EQ( asymmetry_factors(2,2,1), 4.0 )
|
|
458
|
+
ASSERT_EQ( asymmetry_factors(3,2,1), 3.0 )
|
|
459
|
+
|
|
316
460
|
deallocate( grid )
|
|
317
461
|
deallocate( grids )
|
|
318
462
|
deallocate( profile )
|
|
319
463
|
deallocate( profile_copy )
|
|
320
464
|
deallocate( profiles )
|
|
465
|
+
deallocate( radiator_copy )
|
|
466
|
+
deallocate( radiator )
|
|
467
|
+
deallocate( radiators )
|
|
468
|
+
deallocate( height_grid )
|
|
469
|
+
deallocate( wavelength_grid )
|
|
321
470
|
deallocate( tuvx )
|
|
322
471
|
|
|
323
472
|
end subroutine test_tuvx_solve
|
|
@@ -16,7 +16,7 @@ module musica_tuvx_profile
|
|
|
16
16
|
interface
|
|
17
17
|
function create_profile_c(profile_name, profile_units, grid, error) &
|
|
18
18
|
bind(C, name="CreateProfile")
|
|
19
|
-
use iso_c_binding, only: c_ptr, c_char
|
|
19
|
+
use iso_c_binding, only: c_ptr, c_char
|
|
20
20
|
use musica_util, only: error_t_c
|
|
21
21
|
character(len=1, kind=c_char), intent(in) :: profile_name(*)
|
|
22
22
|
character(len=1, kind=c_char), intent(in) :: profile_units(*)
|