{"id":21093724,"url":"https://github.com/brian-rose/emombm","last_synced_at":"2026-03-19T18:49:55.827Z","repository":{"id":85788209,"uuid":"126207478","full_name":"brian-rose/EMomBM","owner":"brian-rose","description":"Code for the coupled Energy-Momentum Balance Model from Rose and Marshall, JAS 2009","archived":false,"fork":false,"pushed_at":"2018-03-21T17:01:23.000Z","size":5172,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-09T19:44:05.433Z","etag":null,"topics":["climate-model","energy-balance-model","sea-ice"],"latest_commit_sha":null,"homepage":null,"language":"Matlab","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brian-rose.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-03-21T16:19:26.000Z","updated_at":"2022-12-25T13:37:38.000Z","dependencies_parsed_at":"2023-03-04T14:00:23.179Z","dependency_job_id":null,"html_url":"https://github.com/brian-rose/EMomBM","commit_stats":{"total_commits":4,"total_committers":1,"mean_commits":4.0,"dds":0.0,"last_synced_commit":"06e23e5b9370ef92ff33a901a06013de9463bc1d"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/brian-rose/EMomBM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brian-rose%2FEMomBM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brian-rose%2FEMomBM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brian-rose%2FEMomBM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brian-rose%2FEMomBM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brian-rose","download_url":"https://codeload.github.com/brian-rose/EMomBM/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brian-rose%2FEMomBM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000702,"owners_count":26082837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"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"}},"keywords":["climate-model","energy-balance-model","sea-ice"],"created_at":"2024-11-19T22:04:08.615Z","updated_at":"2025-10-08T21:45:33.594Z","avatar_url":"https://github.com/brian-rose.png","language":"Matlab","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Source code for the Energy-Momentum Balance Model\n\n## Brian E. J. Rose\n\n## Department of Atmospheric \u0026 Environmental Sciences, University at Albany\n\nThis code solves time-dependent diffusion equations for zonally averaged QGPV  in a two-level atmosphere.  \nThe resulting surface stress curl is used to compute heat transport in an underlying ocean layer, \nassuming that transport is dominated by wind-driven gyres.\n\nReference: \n\n[Rose and Marshall, 2009: Ocean heat transport, sea ice, and multiple climate states: \ninsights from energy balance models, J. Atmos. Sci. 66, 2828--2843](https://journals.ametsoc.org/doi/abs/10.1175/2009JAS3039.1)\n\nFor more details, see also\nRose, B.E.J., 2010:  Oceanic Control of the Sea Ice Edge and Multiple Equilibria in the Climate System, PhD thesis, Massachusetts Institute of Technology.\n\nCode is provided as-is.  Proceed with caution.  \nI am not actively developing or maintaining the code at this point, but I hope it will be useful to others.  \nPlease feel free to raise issues here on github.\n\nThree versions of the code are provided:  \n\n- time-stepping codes for Fortran 95\n- time-stepping code for MATLAB, \n- MATLAB code for the steady-state boundary value problem\n\nFortran code was used to produce the calculations in Rose and Marshall (2009).\nMATLAB code is slower but should do the same thing.  However this code is older\nand there are no guarantees that it is free of bugs.\n\n### Fortran code files\n\n- `emombm.f95`: the main model code.  Notation generally follows what's laid out in Rose and Marshall (2009), so should be understandable.  Note that these are just subroutines that need to be invoked by a main program. \n- `run_emombm.f95`:  an example program that invokes the model and integrates it for a specified number of timesteps.\n- `iceline_emombm.f95`: a program that iterates over an array of parameters, in this case solar constant, timestepping the model out to equilibrium for each parameter value. \n- `tridiag.f95`:  a useful subroutine for solving a tridiagonal linear system, which arises from the implicit timestepping scheme on the diffusion operator.\n- `SIZE.h`:  a header file that specifies the grid size.\n- `paramfile`:  contains parameters that are read in at run-time.  Not everything in this file is used in these examples.\n- `extract_results.f95`:  a standalone program that I used to read particular results from a large output file, such as generated by `iceline_emombm.f95`\n\nI was able to compile and run this code with gfortran on several different machines.\n\n### MATLAB time-stepping code files\n\n- `computeku.m`\n- `current_diagnostics.m`\n- `EMomBM.m`\n- `fastSolveU.m`\n- `final_diagnostics.m`\n- `fluxes.m`\n- `heating.m`\n- `iceline_qg.m`\n- `Kvectors.m`\n- `marshallY.m`\n- `noflow.m`\n- `pvflux.m`\n- `stress.m`\n- `temperature.m`\n\nTry just running `iceline_qg` at the MATLAB prompt.\n\n### MATLAB bvp code\n\n- run_EMomBM.m\n- YetAnotherEMomBM.m\n\nType `run_EMomBM` at the MATLAB prompt.\n\nThis is offered as an example of how to set up the boundary value problem for surface wind stress, using the built-in MATLAB BVP solvers.\nThere is no ocean component in this version, but one could be added by adding another ODE and appropriate boundary conditions.\nFor details on the steady-state problem please see Chapter 3 of my thesis cited above.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrian-rose%2Femombm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrian-rose%2Femombm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrian-rose%2Femombm/lists"}