{"id":18847774,"url":"https://github.com/jacobwilliams/dop853","last_synced_at":"2026-02-07T07:02:52.510Z","repository":{"id":41225726,"uuid":"48822902","full_name":"jacobwilliams/dop853","owner":"jacobwilliams","description":"Modern Fortran Edition of Hairer's DOP853 ODE Solver. An explicit Runge-Kutta method of order 8(5,3) for problems y'=f(x,y); with dense output of order 7","archived":false,"fork":false,"pushed_at":"2023-01-29T19:33:47.000Z","size":1473,"stargazers_count":52,"open_issues_count":2,"forks_count":15,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-08-01T15:46:43.573Z","etag":null,"topics":["dop853","fortran","fortran-package-manager","ode","runge-kutta"],"latest_commit_sha":null,"homepage":"","language":"Fortran","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jacobwilliams.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}},"created_at":"2015-12-30T22:59:01.000Z","updated_at":"2025-04-13T06:08:46.000Z","dependencies_parsed_at":"2023-02-16T00:45:42.244Z","dependency_job_id":null,"html_url":"https://github.com/jacobwilliams/dop853","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/jacobwilliams/dop853","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobwilliams%2Fdop853","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobwilliams%2Fdop853/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobwilliams%2Fdop853/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobwilliams%2Fdop853/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jacobwilliams","download_url":"https://codeload.github.com/jacobwilliams/dop853/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jacobwilliams%2Fdop853/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29188312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T05:07:31.176Z","status":"ssl_error","status_checked_at":"2026-02-07T05:06:15.227Z","response_time":63,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["dop853","fortran","fortran-package-manager","ode","runge-kutta"],"created_at":"2024-11-08T03:09:36.704Z","updated_at":"2026-02-07T07:02:52.475Z","avatar_url":"https://github.com/jacobwilliams.png","language":"Fortran","funding_links":[],"categories":[],"sub_categories":[],"readme":"![dop853](media/logo.png)\n============\n\nThis is a modern Fortran (2003/2008) implementation of Hairer's DOP853 ODE solver. The original FORTRAN 77 code has been extensively refactored, and is now object-oriented and thread-safe, with an easy-to-use class interface.  DOP853 is an explicit Runge-Kutta method of order 8(5,3) due to Dormand \u0026 Prince (with stepsize control and dense output).\n\nThis project is hosted on [GitHub](https://github.com/jacobwilliams/dop853).\n\n## Status\n\n[![GitHub release](https://img.shields.io/github/release/jacobwilliams/dop853.svg)](https://github.com/jacobwilliams/dop853/releases/latest)\n[![CI Status](https://github.com/jacobwilliams/dop853/actions/workflows/CI.yml/badge.svg)](https://github.com/jacobwilliams/dop853/actions)\n[![codecov](https://codecov.io/gh/jacobwilliams/dop853/branch/master/graph/badge.svg)](https://codecov.io/gh/jacobwilliams/dop853)\n[![last-commit](https://img.shields.io/github/last-commit/jacobwilliams/dop853)](https://github.com/jacobwilliams/dop853/commits/master)\n\n## Example\n\nBasic use of the solver is shown here. The main methods in the `dop853_class` are `initialize()` and `integrate()`.\n\n```fortran\n  program dop853_example\n\n  use dop853_module, wp =\u003e dop853_wp\n  use iso_fortran_env, only: output_unit\n\n  implicit none\n\n  integer,parameter               :: n   = 2               !! dimension of the system\n  real(wp),parameter              :: tol = 1.0e-12_wp      !! integration tolerance\n  real(wp),parameter              :: x0  = 0.0_wp          !! initial x value\n  real(wp),parameter              :: xf  = 100.0_wp        !! endpoint of integration\n  real(wp),dimension(n),parameter :: y0  = [0.0_wp,0.1_wp] !! initial y value\n\n  type(dop853_class)    :: prop\n  real(wp),dimension(n) :: y\n  real(wp),dimension(1) :: rtol,atol\n  real(wp)              :: x\n  integer               :: idid\n  logical               :: status_ok\n\n  x    = x0   ! initial conditions\n  y    = y0   !\n  rtol = tol  ! set tolerances\n  atol = tol  !\n\n  !initialize the integrator:\n  call prop%initialize(fcn=fvpol,n=n,status_ok=status_ok)\n  if (.not. status_ok) error stop 'initialization error'\n\n  !now, perform the integration:\n  call prop%integrate(x,y,xf,rtol,atol,iout=0,idid=idid)\n\n  !print solution:\n  write (output_unit,'(1X,A,F6.2,A,2E18.10)') \u0026\n              'x =',x ,' y =',y(1),y(2)\n\ncontains\n\n  subroutine fvpol(me,x,y,f)\n  !! Right-hand side of van der Pol's equation\n\n  implicit none\n\n  class(dop853_class),intent(inout) :: me\n  real(wp),intent(in)               :: x\n  real(wp),dimension(:),intent(in)  :: y\n  real(wp),dimension(:),intent(out) :: f\n\n  real(wp),parameter :: mu  = 0.2_wp\n\n  f(1) = y(2)\n  f(2) = mu*(1.0_wp-y(1)**2)*y(2) - y(1)\n\n  end subroutine fvpol\n\nend program dop853_example\n```\n\nThe result is:\n\n```\nx =100.00 y = -0.1360372426E+01  0.1325538438E+01\n```\n\nFor dense output, see the example in the `src/tests` directory.\n\n## Building DOP853\n\nA [Fortran Package Manager](https://github.com/fortran-lang/fpm) manifest file is included, so that the library and tests cases can be compiled with FPM. For example:\n\n```\nfpm build --profile release\nfpm test --profile release\n```\n\nTo use `dop853` within your FPM project, add the following to your `fpm.toml` file:\n```toml\n[dependencies]\ndop853 = { git=\"https://github.com/jacobwilliams/dop853.git\" }\n```\n\nBy default, the library is built with double precision (`real64`) real values. Explicitly specifying the real kind can be done using the following processor flags:\n\nPreprocessor flag | Kind  | Number of bytes\n----------------- | ----- | ---------------\n`REAL32`  | `real(kind=real32)`  | 4\n`REAL64`  | `real(kind=real64)`  | 8\n`REAL128` | `real(kind=real128)` | 16\n\nFor example, to build a single precision version of the library, use:\n\n```\nfpm build --profile release --flag \"-DREAL32\"\n```\n\nTo generate the documentation using [FORD](https://github.com/Fortran-FOSS-Programmers/ford), run:\n\n```\nford dop853.md\n```\n\n## 3rd Party Dependencies\n\nThe unit tests require [pyplot-fortran](https://github.com/jacobwilliams/pyplot-fortran) which will be automatically downloaded by FPM.\n\n## Documentation\n\nThe latest API documentation for the `master` branch can be found [here](https://jacobwilliams.github.io/dop853/). This is generated by processing the source files with [FORD](https://github.com/Fortran-FOSS-Programmers/ford).\n\n## References\n\n1. E. Hairer, S.P. Norsett and G. Wanner, \"[Solving ordinary\n   Differential Equations I. Nonstiff Problems](http://www.unige.ch/~hairer/books.html)\", 2nd edition.\n   Springer Series in Computational Mathematics,\n   Springer-Verlag (1993).\n2. Ernst Hairer's website: [Fortran and Matlab Codes](http://www.unige.ch/~hairer/software.html)\n\n## License\n\n* [Original license for Hairer's codes](http://www.unige.ch/~hairer/prog/licence.txt).\n* The updates are released under a [similar BSD-style license](https://raw.githubusercontent.com/jacobwilliams/dop853/master/LICENSE).\n\n## See also\n* [numbalsoda](https://github.com/Nicholaswogan/numbalsoda) Python wrapper to this code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacobwilliams%2Fdop853","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjacobwilliams%2Fdop853","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacobwilliams%2Fdop853/lists"}