Giter VIP home page Giter VIP logo

hector's Introduction

hector

DOI C++ unit tests Command Line Hector R-CMD-check codecov

This is the repository for Hector, an open source, object-oriented, simple global climate carbon-cycle model that runs very quickly while still representing the most critical global scale earth system processes. Hector is a simple climate model (SCM, also known as a reduced-complexity climate model), a class of models that are extremely versatile with a wide range of applications. Due to their computational efficiency, SCMs can easily be coupled to other models and used to design scenarios, emulate more complex climate models, and conduct uncertainty analyses.

Hector’s output for global mean air temperature change for eight Shared Socioeconomic Pathways (SSPs).

Installation

The hector R package can be installed using the remotes::install_github function. More detailed installation instructions, including how to set up Hector as a command line executable, can be found here.

remotes::install_github('jgcri/hector')
library(hector)

Tools and Software That Work with Hector

  • GCAM: Hector can be used as the climate component in GCAM
  • pyhector: a Python interface to Hector
  • fldgen: a spatially resolved temperature & precipitation emulator for CMIP5 ESMs
  • HectorUI: run Hector in a web interface!

Contributing to Hector

The Hector team welcomes and values community contributions, but please see our Contribution Guide and note by contributing to this project, you agree to abide to our Contributor Code of Conduct


This research was supported by the U.S. Department of Energy, Office of Science, as part of research in Multi-Sector Dynamics, Earth and Environmental System Modeling Program. The Pacific Northwest National Laboratory is operated for DOE by Battelle Memorial Institute under contract DE-AC05-76RL01830.

hector's People

Contributors

ashiklom avatar bpbond avatar bvegawe avatar cahartin avatar clynchy avatar crvernon avatar dawnlwoodard avatar gaelforget avatar kdorheim avatar leeyap avatar mbins avatar mnichol3 avatar payerle avatar pralitp avatar rgieseke avatar rplzzz avatar skygering avatar ssmithclimate avatar swillner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hector's Issues

Prioritizing issues

Hi @rplzzz @cahartin FYI I've started to add a "0.2" milestone to some issues. These are ones I think should be high priority (important & doable, or easy); feel free to add/opine.

Opaque error if input file not found

If Hector can't find an input file, e.g. inpdut/hector_rcp45.ini, it reports

Fri Jan  9 13:38:39 2015:NOTICE:parse: Parsing inpdut/hector_rcp45.ini
* Program exception: Parse error in file inpdut/hector_rcp45.ini line -1
* Function parse, file h_reader.cpp, line 49

This is not very informative.

Hector won't build on mac

From @bpbond, originally posted in #27 :

I'm building this code for the first time on my machine, and getting a compiler (clang, set to dialect
gnu++11) error at logger.hpp:33, in the LogLevel enum. Seems like it has to be related to the new
namespace, but not a very helpful error message ("expected '}'")

Later followed up with:

Ah, OK, the clang compiler has a default DEBUG preprocessor macro that signals whether the build
target is debug or release, and that was screwing things up. Option 1 - I change the preprocessor
macro. Option 2 - change DEBUG to HDEBUG, or something like that, in the Hector code. Probably the first.

Log entries from main() are not appearing

main() kicks off by opening the log thus:

  Logger& glog = Logger::getGlobalLogger();
  glog.open( string( MODEL_NAME ), true, Logger::DEBUG );

This should record log messages at level DEBUG or higher; however, none of the log messages recorded at log level NOTICE have been recorded. E.g, this message

   H_LOG( glog, Logger::NOTICE ) << "Running the core." << endl;

appears nowhere in the output:

rpl@WE27653:~/wrk/hector$ source/hector input/hector_rcp45.ini | grep "Running the core"

Run completed. Press [ENTER] to finish.

rpl@WE27653:~/wrk/hector$ 

Need license file

Sometime before we open the repository to the public we need to add a file with the text of the license we are releasing under to the top-level directory.

Ocean_csys and oxygen

Minor ocean_csys header needs doxygen documentation N ocean_csys.hpp Ben Corinne Open

Stub mode

Components should have a 'stub' or 'data' mode (à la CESM) in which they simply pull data from a specified file, or return fixed values.

Hector temperature values (plus GCAM results!)

Good news, everyone! I've got Hector running with GCAM. Here are some plots from the GCAM data viewer. The red line in each is Hector; the blue line is MAGICC. Note also that MAGICC starts ingesting GCAM emissions after 2005, while Hector starts after 2010.

hector-co2

hector-forcing

hector-tmp

Now, for the question promised by the issue tag. What's the story with the temperatures? They look awfully high. For example, in 2000 the temperature anomaly is nearly 1.25 C. I pulled the outputstream from a stand-alone run and found the same result:

2000,rcp45,0,temperature,Tgav,1.17862,degC
2000,rcp45,0,temperature,Tgaveq,1.39939,degC

(sub-question: what is the difference between T and Teq?)

I just looked back at figure 4 from the paper, and it seems we see it there too. We track pretty well through sometime shortly after 1950, and then we sort of take off abruptly. Do we have any idea what's causing that? Everything else looks good, but that temperature result is bound to generate some push-back from GCAM users.

Disabling components - consistent behavior

Disabling 'leaf' components (no one depends on them) should not affect the model's ability to run. The model should not run if non-leaf components are disabled (and no other component is providing their data). Verify this.

Fair use document

In addition to a license (see issue #28 ) we probably want a "fair use" document, akin to what (I think) CESM has.

Provide forcing for all atmospheric components

Currently Hector provides only total forcing and forcing from each halocarbon gas. The model calculates forcing from other atmospheric components and from albedo (obviously---it needs them for the total), but it doesn't provide a way to report them separately from the total.

Tseries .first and .last to be clearer

We may want to rename .first and .last in the tseries to .firstDate and .lastDate for clarity. I was using them incorrectly thinking they were giving me back a value instead of a date.

Spinup and fixed NPP

Minor Using fixed NPP in spinup means bad things can happen if other C pools are too low N simpleNbox.cpp Ben Open

Forcing component shouldn't have to know individual halocarbons

Right now, the forcing component has to know about the existence of all the individual halocarbons. It would be a LOT more elegant if it could simply (i) register its dependency on ALL halocarbons, and (ii) query halocarbonComponent for a list of all the extant hc's, then get the forcing information from each. That would mean halocarbons would be purely defined via input, no code changes required, and would be backwards-compatible.

Documentation is incomplete

In particular,

  • building and running the model on all platforms
  • a demo showing how to use backend R scripts

This has been (rightly) requested by the GMD reviewers.

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.