{"id":318433,"name":"G³M-f","description":"The global gradient-based groundwater model framework is an extensible program to build groundwater models.","url":"https://github.com/rreinecke/global-gradient-based-groundwater-model","last_synced_at":"2026-05-25T02:04:36.717Z","repository":{"id":41281088,"uuid":"109667597","full_name":"rreinecke/global-gradient-based-groundwater-model","owner":"rreinecke","description":"The global gradient-based groundwater model G³M","archived":false,"fork":false,"pushed_at":"2026-03-11T10:32:37.000Z","size":50109,"stargazers_count":8,"open_issues_count":13,"forks_count":5,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-29T23:02:34.252Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rreinecke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":"codemeta.json","zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-11-06T08:29:12.000Z","updated_at":"2026-03-11T10:32:43.000Z","dependencies_parsed_at":"2023-09-23T00:43:53.186Z","dependency_job_id":"99705407-1d19-4f61-ae28-e4458b927f70","html_url":"https://github.com/rreinecke/global-gradient-based-groundwater-model","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/rreinecke/global-gradient-based-groundwater-model","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreinecke%2Fglobal-gradient-based-groundwater-model","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreinecke%2Fglobal-gradient-based-groundwater-model/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreinecke%2Fglobal-gradient-based-groundwater-model/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreinecke%2Fglobal-gradient-based-groundwater-model/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rreinecke","download_url":"https://codeload.github.com/rreinecke/global-gradient-based-groundwater-model/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreinecke%2Fglobal-gradient-based-groundwater-model/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31421869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T00:25:07.052Z","status":"online","status_checked_at":"2026-04-05T02:00:05.211Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"rreinecke","name":"Robert Reinecke","uuid":"33414436","kind":"user","description":"","email":"","website":"https://www.researchgate.net/profile/Robert_Reinecke2","location":"Mainz","twitter":null,"company":"JGU Mainz","icon_url":"https://avatars.githubusercontent.com/u/33414436?u=4764a8322044099b674ec9d033912c8f78e025ff\u0026v=4","repositories_count":2,"last_synced_at":"2023-09-01T00:15:44.435Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/rreinecke","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-09-01T00:15:44.437Z","updated_at":"2023-09-01T00:15:44.437Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rreinecke","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rreinecke/repositories"},"packages":[],"commits":{"id":9625908,"full_name":"rreinecke/global-gradient-based-groundwater-model","default_branch":"master","total_commits":235,"total_committers":5,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":47.0,"dds":0.5914893617021277,"past_year_total_commits":2,"past_year_total_committers":1,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":2.0,"past_year_dds":0.0,"last_synced_at":"2026-04-13T06:00:40.527Z","last_synced_commit":"8e7f6031d3244181b3eaa6c5fa12d979f28a7533","created_at":"2025-04-11T11:37:29.368Z","updated_at":"2026-04-13T06:00:37.035Z","committers":[{"name":"Daniel","email":"68381634+daniel-v-k","login":"daniel-v-k","count":96},{"name":"Robert Reinecke","email":"33414436+rreinecke","login":"rreinecke","count":78},{"name":"Robert Reinecke","email":"reinecke@em.uni-frankfurt.de","login":null,"count":51},{"name":"Robert Reinecke","email":"robert.reinecke@uni-potsdam.de","login":null,"count":9},{"name":"SebAcki","email":"Ackermann@geo.uni-frankfurt.de","login":"SebAcki","count":1}],"past_year_committers":[{"name":"Robert Reinecke","email":"33414436+rreinecke","login":"rreinecke","count":2}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreinecke%2Fglobal-gradient-based-groundwater-model/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-15T00:00:09.512Z","repositories_count":6213593,"commits_count":903370819,"contributors_count":34924210,"owners_count":1144562,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"rreinecke/global-gradient-based-groundwater-model","html_url":"https://github.com/rreinecke/global-gradient-based-groundwater-model","last_synced_at":"2026-04-09T04:00:35.298Z","status":"error","issues_count":19,"pull_requests_count":27,"avg_time_to_close_issue":18943374.75,"avg_time_to_close_pull_request":587014.92,"issues_closed_count":8,"pull_requests_closed_count":25,"pull_request_authors_count":3,"issue_authors_count":5,"avg_comments_per_issue":0.8421052631578947,"avg_comments_per_pull_request":0.3333333333333333,"merged_pull_requests_count":21,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"past_year_pull_requests_count":1,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":1,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":1.0,"past_year_avg_comments_per_pull_request":0.0,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2025-04-11T11:37:29.695Z","updated_at":"2026-04-09T04:00:35.299Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreinecke%2Fglobal-gradient-based-groundwater-model","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/rreinecke%2Fglobal-gradient-based-groundwater-model/issues","issue_labels_count":{"enhancement":8,"good first issue":4,"help wanted":1,"documentation":1,"bug":1},"pull_request_labels_count":{},"issue_author_associations_count":{"COLLABORATOR":9,"OWNER":7,"NONE":3},"pull_request_author_associations_count":{"COLLABORATOR":25,"OWNER":4},"issue_authors":{"daniel-v-k":7,"rreinecke":7,"alexwachholz":2,"SebAcki":2,"SameerWatve":1},"pull_request_authors":{"daniel-v-k":22,"rreinecke":4,"SebAcki":3},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-15T00:00:09.535Z","repositories_count":14269060,"issues_count":34630327,"pull_requests_count":113269358,"authors_count":11234946,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"daniel-v-k","count":29,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/daniel-v-k"},{"login":"rreinecke","count":11,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/rreinecke"},{"login":"SebAcki","count":5,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/SebAcki"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":1,"ForkEvent":1},"last_year":{}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/cmake.yml","sha":null,"kind":"manifest","created_at":"2023-02-15T10:31:05.926Z","updated_at":"2023-02-15T10:31:05.926Z","repository_link":"https://github.com/rreinecke/global-gradient-based-groundwater-model/blob/master/.github/workflows/cmake.yml","dependencies":[{"id":7682662039,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":7682662040,"package_name":"egor-tensin/setup-clang","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":7682662041,"package_name":"MarkusJx/install-boost","ecosystem":"actions","requirements":"v2.1.0","direct":true,"kind":"composite","optional":false}]}],"score":4.653960350157523,"created_at":"2025-06-12T00:15:46.644Z","updated_at":"2026-05-25T02:04:36.732Z","avatar_url":"https://github.com/rreinecke.png","language":"C++","category":"Hydrosphere","sub_category":"Freshwater and Hydrology","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"[![status](http://joss.theoj.org/papers/5fda5a279db561b6d4c597bbbe574867/status.svg)](http://joss.theoj.org/papers/5fda5a279db561b6d4c597bbbe574867)\n[![DOI](https://zenodo.org/badge/109667597.svg)](https://zenodo.org/badge/latestdoi/109667597)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1315471.svg)](https://doi.org/10.5281/zenodo.1315471) \n[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![DOI:110.5194/gmd-2018-120](https://zenodo.org/badge/DOI/10.1007/978-3-319-76207-4_15.svg)](https://doi.org/10.5194/gmd-2018-120) \n\n# Documentation\nThe current documentation can be found on [http://globalgroundwatermodel.org](http://globalgroundwatermodel.org)\n\n# The global gradient-based groundwater model framework G³M\nThe global gradient-based groundwater model framework G³M-f is an extensible model framework.\nIts main purpose is to be used as a main building block for the global groundwater mode G³M.\nG³M is a newly developed gradient-based groundwater model which adapts MODFLOW [@harbaugh2005modflow] principles for the globalscale.\nIt is written in C++ and intended to be coupled to the global hydrology model WaterGAP (http://watergap.de), but can also be used for regional groundwater models and coupling to other hydrology models.\nWhile it is intended to be used as a in memory coupled model it is also capable of running a standard standalone groundwater model.\n\n## Getting Started  \nThese instructions will get you a copy of the project up and running on your local machine for development and testing purposes.\n### Prerequisites\n\nTo compile the program, you will need:\n```\nclang \u003e= 13 with openMP (currently gcc is not supported)\ncmake \u003e= 3.15.3\nlibboost \u003e= 1.71\nlibGMP\nlibGtest\nlcov\n```\n### Build\nIf the current directory is the model folder, enter the following commands in the terminal:\n```\nmkdir build\ncd build\ncmake ../\nmake\n```\n\n### Equations\nThe three dimensional flow of water through the porous material between the cells is solved as a partial differential equation.\nWhere K is the hydraulic conductivity [L/T] along the three axis, S the specific storage and W is the volumentric flux per unit volume in and out of the groundwater system.\nThe hydraulic conductivity between two cells is caluclated b yusing the harmonic mean.\nThe equation is solved using a conjugate gradient approach and an Incomplete LUT preconditioner.\n![](https://latex.codecogs.com/gif.latex?\\frac{\\partial}{\\partial\u0026space;x}\\left\u0026space;(\u0026space;K_{x}\u0026space;\\frac{\\partial\u0026space;h}{\\partial\u0026space;x}\u0026space;\\right\u0026space;)\u0026space;\u0026plus;\u0026space;\\frac{\\partial}{\\partial\u0026space;y}\\left\u0026space;(\u0026space;K_{y}\u0026space;\\frac{\\partial\u0026space;h}{\\partial\u0026space;y}\u0026space;\\right\u0026space;)\u0026space;\u0026plus;\u0026space;\\frac{\\partial}{\\partial\u0026space;z}\\left\u0026space;(\u0026space;K_{z}\u0026space;\\frac{\\partial\u0026space;h}{\\partial\u0026space;z}\u0026space;\\right\u0026space;)\u0026space;\u0026plus;\u0026space;W\u0026space;=\u0026space;S_{s}\u0026space;\\frac{\\partial\u0026space;h}{\\partial\u0026space;t} \"Main equation\")\n\nAdditonal information on the equations can be found in the very detailed MODFLOW documentation: [Modflow 2005](https://water.usgs.gov/ogw/modflow/MODFLOW.html)\n\n### Boundary Conditions\nG³M support multiple boundary condition types:\n* No-flow boundary\n* Static head boundary\n* General head boundary\n* Groundwater recharge\n* Lakes\n* Wetlands\n* Different river approaches\n\nNew flows can be defined in Model/ExternalFlows.hpp.\nThe domain boundary is currently defined implicitly through the input grid as no-flow for grid files and as General Head Boundary (GHB) at the ocean boundary for irregular grids.\nThis behaviour can be changed in DataProcessing/Neighbouring.hpp.\n\n## Quick start\nThe following picture shows the conceptual example model:\n![](docs/simple_model.png)\n\nAfter compilation run:\n```\nsimple_model\n```\nIt will yield a depth to water table CSV file called wtd.csv for a simple model.\n\n## How to use\nThe follwing will guide you through the building blocks of the simple model shipped along with the code.\nIt assumes that you've constructed your model domain and have input data for the following\n* Groundwater recharge (recharge_simple.csv)\n* Surface elevation (elevation_simple.csv)\n* Rivers, location, elevation and depth (rivers_simple.csv)\n* Hydrogeology (lithology_simple.csv)\n* Riverbed conductance (rivers_simple.csv)\n* Inital head guess (otherwise the model assumes the surface elevation as best guess) (\"heads_simple.csv\")\n\nCenter building stone for the framework is the GW_interface connecting any model with the groundwater code.\nImplement this interface if you want to couple your model to G³M-f or build a custom standalone application.\nIn tests/SimpleModel you'll find an example implementation explained further in the following.\n\n```\nclass GW_Interface {\n    public:\n        virtual ~GW_Interface() {}\n        virtual void\n        loadSettings() = 0;\n        virtual void\n        setupSimulation() = 0;\n        virtual void\n        writeData() = 0;\n        virtual void\n        simulate() = 0;\n};\n```\n\nThe following shows the code for a simple model loop running a steady-state model with daily timesteps.\n```\nvoid StandaloneRunner::simulate() {\n    Simulation::Stepper stepper = Simulation::Stepper(_eq, Simulation::DAY, 1);\n    for (Simulation::step step : stepper) {\n        LOG(userinfo) \u003c\u003c \"Running a steady state step\";\n        step.first-\u003etoogleSteadyState();\n        step.first-\u003esolve();\n        sim.printMassBalances();\n    }\n    DataProcessing::DataOutput::OutputManager(\"data/out_simple.json\", sim).write();\n    //sim.save();\n}\n```\n\n### Write out data\nWrite out of data is specified by a JSON file called out.json.\nIf you want to add custom fields you can do so in src/DataProcessing/DataOutput.\n```\n{\n  \"output\": {\n    \"StaticResult\": [\n      {\n        \"name\": \"wtd\",\n        \"type\": \"csv\",\n        \"field\": \"DepthToWaterTable\",\n        \"ID\": \"false\",\n        \"position\": \"true\"\n      }\n    ],\n    \"InnerIteration\": {\n    },\n    \"OuterIteration\": {\n    }\n  }\n}\n```\n\n### Config model\nIn order to configure the model variables you can simply change the .json file. Allowing you to change the convergence criteria and the location for your input files.\n\n### Parameters\nThe following explains the main config parameters.\n\n* model_config\n  * nodes: A file describing the input grid\n  * row_cols: true: neighbouring is determined by their position in an evenly grid, false: neighbouring is determined by their lat and lon position (currently only supports 5' resolution)\n  * threads: How many computation threads to use to solve the equation\n  * layers: Number of layers of the model domain\n  * confinement: Define which of the layers is a confined layer\n* numerics\n  * solver: Currently only Preconditioned Conjugent Gradient, code for a newton approach is available but untested\n  * iterations: Number of picard iterations\n  * closingcrit: Inf norm of the residuals\n  * headchange: Closing criterion for max. head change for 3 consecutive iterations\n  * damping: Damping of residuals in between picard iterations\n* input: Internaly the model code assumes time dependant parameters to be per day\n  * data_config: Describes wether default data is used or a input file should be read\n  * default_data: specifiy default parameters\n  * data: Inputdata - can be modified according to the users need. The shown inputs are the supported defaults\n\n```\n{\n  \"config\": {\n    \"model_config\": {\n      \"nodes\": \"grid_simple.csv\",\n      \"row_cols\": \"true\",\n      \"steadystate\": \"true\",\n      \"number_of_nodes\": 100,\n      \"number_of_rows\": 10,\n      \"number_of_cols\": 10,\n      \"edge_length_rows\": 3.162277,\n      \"edge_length_cols\":3.162277,\n      \"threads\": 1,\n      \"layers\": 2,\n      \"confinement\": [\n        \"false\",\n        \"true\"\n      ],\n      \"cache\": \"false\",\n      \"adaptivestepsize\": \"false\",\n      \"boundarycondition\": \"GeneralHeadBoundary\",\n      \"sensitivity\": \"false\"\n    },\n    \"numerics\": {\n      \"solver\": \"PCG\",\n      \"iterations\": 500,\n      \"inner_itter\": 10,\n      \"closingcrit\": 1e-8,\n      \"headchange\": 0.0001,\n      \"damping\": \"false\",\n      \"min_damp\": 0.01,\n      \"max_damp\": 0.5,\n      \"stepsize\": \"daily\"\n    },\n  \"input\": {\n    \"data_config\": {\n      \"k_from_lith\": \"true\",\n      \"k_ghb_from_file\": \"false\",\n      \"specificstorage_from_file\": \"false\",\n      \"specificyield_from_file\": \"false\",\n      \"k_river_from_file\": \"true\",\n      \"aquifer_depth_from_file\": \"false\",\n      \"initial_head_from_file\": \"true\",\n      \"data_as_array\": \"false\"\n    },\n    \"default_data\": {\n      \"initial_head\": 5,\n      \"K\": 0.008,\n      \"ghb_K\": 800,\n      \"aquifer_thickness\": [\n        10,\n        10\n      ],\n      \"anisotropy\": 10,\n      \"specificyield\": 0.15,\n      \"specificstorage\": 0.000015\n    },\n    \"data\": {\n      \"recharge\": \"recharge_simple.csv\",\n      \"elevation\": \"elevation_simple.csv\",\n      \"rivers\": \"rivers_simple.csv\",\n      \"lithology\": \"lithology_simple.csv\",\n      \"river_conductance\": \"rivers_simple.csv\",\n      \"initial_head\": \"heads_simple.csv\"\n    }\n  }\n  }\n}\n```\n\n## Deployment in other models\nThe main steps towards your own model is to implement the GW_interface and provide a DataReader.\nA standlone version can be easily implemented by extending the simple example provided above.\nIf extended coupling is necessar the newest version provides a coupling interface.\n\n\n### In memory coupling\nG³M-f is written with the coupling to other models in mind.\nIn contrast to other model coupling efforts, it is not necessary to write out files in one model and read them in in another model.\nYou can diretly link G³M-f with your existing executable and by providing a class in your already existing model code that implements the gw_interface, you are free to call the simulate() function at any timestep you like.\nFurthermore, the interface provides pointer containers and callbacks to transfer data in memory without the need to waste time on I/O.\n\nPlease contact us if you need advice.\n\n## Running the tests\nAutomated tests consits of gunit test which are compiled automatically with the attached cmake file.\n  \nYou can run them by executing the test executable.\n```\nrunUnitTests\n```\n\n## Known issues\nIf you running on Ubuntu google tests might not be build by installing `apt install libgtest-dev`. This can be fixed by:\n```\ncd /usr/src/googletest/googletest\nmkdir build\ncd build\ncmake ..\nmake\ncp *.a /usr/lib\n```\n\n## Built With  \n* [Eigen3](http://eigen.tuxfamily.org) - Doing the math magic\n* [GTest](https://github.com/google/googletest) - Test framework\n* [libboost](http://www.boost.org) - C++ magic\n* [OpenMP](http://www.openmp.org) - Accelerator und Multi-Core support\n* [GMP](https://gmplib.org) - Large numbers\n## Contributing\nPlease read [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.\n## Versioning\nWe use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/your/project/tags). \n\n## Authors and Contributors\n\n* **Robert Reinecke** - *Initial work* *Maintainer*\n* **Ricarda Dietrich** - *Maintainer*\n* **Marie Illgen** - *Maintainer*\n* **Zahraa Obaidy** - *Developer*\n\n### Past Contributors\n\n* **Alexander Wachholz** - *Documentation review*\n* **Christoph Niemann** - *Developer*\n* **Sebastian Ackermann** - *Developer*\n* **Daniel Kretschmer** - *Developer*\n* **Anna-Tabea Pippardt** - *Maintainer*\n\n## License  \nThis project is licensed under the GNU General Public License - see the [LICENSE](LICENSE) file for details.\nPlease note that the code contains a modified version of the Eigen3 library which is published under the [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/).\n## Acknowledgments\n* [Modflow 2005](https://water.usgs.gov/ogw/modflow/MODFLOW.html) for their great documentation\n* [Eigen3](http://eigen.tuxfamily.org) for their awesome framework\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.1315471","https://doi.org/10.5194/gmd-2018-120"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/318433","html_url":"https://ost.ecosyste.ms/projects/318433"}