Skip to content

Commit 8f5f819

Browse files
committed
Merge branch 'release/0.2.1'
2 parents f9c43f4 + 83195b1 commit 8f5f819

16 files changed

Lines changed: 374 additions & 180 deletions

.travis.yml

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
language: python
2-
3-
python:
4-
- 2.7
1+
language: generic
52

63
sudo: false
74

@@ -17,38 +14,58 @@ addons:
1714
sources:
1815
- ubuntu-toolchain-r-test
1916
packages:
20-
- gfortran-4.9
17+
- gfortran-6
2118
- binutils
2219
- python-pip
23-
- graphviz
20+
- graphviz
2421

2522
env:
2623
global:
27-
- SCRIPT="FoBiS.py rule -ex makecoverage"
24+
- MAKECOVERAGE="FoBiS.py rule -ex makecoverage"
25+
- MAKEDOC="./scripts/makedoc.sh Fortran-FOSS-Programmers/FOODIE"
26+
- CLEAN="FoBiS.py rule -ex clean"
27+
- MAKETAR="FoBiS.py rule -ex maketar"
2828

2929
before_install:
30-
- git submodule update --init --recursive
30+
- git submodule update --init
3131

3232
install:
3333
- |
3434
if [[ ! -d "$HOME/.local/bin" ]]; then
3535
mkdir "$HOME/.local/bin"
3636
fi
3737
- export PATH="$HOME/.local/bin:$PATH"
38-
- export FC=/usr/bin/gfortran-4.9
39-
- ln -fs /usr/bin/gfortran-4.9 "$HOME/.local/bin/gfortran" && gfortran --version
40-
- ls -l /usr/bin/gfortran-4.9
41-
- ln -fs /usr/bin/gcov-4.9 "$HOME/.local/bin/gcov" && gcov --version
42-
- pip install --upgrade pygooglechart
43-
- pip install --upgrade graphviz
44-
- pip install --upgrade FoBiS.py
45-
- pip install --upgrade markdown-checklist
46-
- pip install --upgrade ford
38+
- export FC=/usr/bin/gfortran-6
39+
- ln -fs /usr/bin/gfortran-6 "$HOME/.local/bin/gfortran" && gfortran --version
40+
- ls -l /usr/bin/gfortran-6
41+
- ln -fs /usr/bin/gcov-6 "$HOME/.local/bin/gcov" && gcov --version
42+
- pip install --user --upgrade pygooglechart
43+
- pip install --user --upgrade graphviz
44+
- pip install --user --upgrade FoBiS.py
45+
- pip install --user --upgrade markdown-checklist
46+
- pip install --user --upgrade ford
4747

4848
script:
49-
- $SCRIPT
49+
- $MAKECOVERAGE
5050

5151
after_success:
52-
- cd $TRAVIS_BUILD_DIR
53-
- cd build/lib/obj/ ; bash <(curl -s https://codecov.io/bash) ; cd -
54-
- ./makedoc.sh Fortran-FOSS-Programmers/FOODiE
52+
- find . -name '*.gcno' -print
53+
- bash <(curl -s https://codecov.io/bash)
54+
- $MAKEDOC
55+
56+
before_deploy:
57+
- $CLEAN
58+
- $MAKETAR
59+
- mv FOODIE.tar.gz FOODIE-$TRAVIS_TAG.tar.gz
60+
61+
deploy:
62+
provider: releases
63+
api_key:
64+
secure: QTsZ8jIN5/f15EW/L93u7Yn0fUlX1UaF6qCLfiWfo0jDiK0FGkIo4B+MeBYbZs+HphMxbhDv7v+A1dpcA8w9RlkMX47NsGT4Nu7bu5AzABsjnFPUKbUux4ktoYkPAxXujcvT1fTYrv2bgH0ualtPnvU9CDT3PRfUpZND+bM0UIMyo40ojOec2v3opYfGYvbksosAVKTg15cxzxGgGVrZb+DWfnILgrETieULL1Tvp8eZG9wY9Kja65JCzbUVBrcGIThz5iZqO8rAi6Opl7cgpP7W2qRotNRXQjQc1KsV+HH0w5eTCUwqUZOJKuucZrUjYiu762LYMYfLGxs4F2Wy2aXPqcTImVIG5W9tFN4xKsL46Ed7PZdCHWZJFCFx89znEosZnCFmSp445L88Q1/dbluk/oP+TxYi6z61QEstSB2T5r0Pv/rC2PGqoBlYyCGIZZdBzzXNSW2gaUEkhNgOU1Q/K6yFpjy+GUxvcGugroWsHBXvoSMswzC+IhYUvjSXkiFM5AkXbJrb8/mIc25QehUrvO5Fe/A67o2HuM6aHZDBbGyP8876k63o1H82JkW0fSfCrcWu302eqCu5YwrZJ3I20bepZEbj5Wh50Bz6n8c0ZsFQL1GUxAA+3KBtWp7wDHK9WYsKrdc2FFGtfZgQ7X5iiY01/i6ZCqiUO4vASWg=
65+
file:
66+
- FOODIE-$TRAVIS_TAG.tar.gz
67+
- ./scripts/install.sh
68+
skip_cleanup: true
69+
overwrite: true
70+
on:
71+
tags: true

README.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,12 @@ FOODIE is aimed to be a KISS-pure-Fortran library for integrating Ordinary Diffe
7676
+ [x] unfiltered leapfrog, 2nd order accurate, mostly unstable, see [4];
7777
+ [x] Robert-Asselin filtered leapfrog, 1st order accurate, see [4, 5, 6];
7878
+ [x] Robert-Asselin-Williams filtered leapfrog, 3rd order accurate, see [5, 6];
79+
+ [x] [Linear Multistep Methods SSP](http://fortran-foss-programmers.github.io/FOODIE/module/foodie_integrator_lmm_ssp.html) schemes see [16]:
80+
+ [x] 3 steps, 2nd order accurate;
81+
+ [x] 4 steps, 3rd order accurate;
82+
+ [x] 5 steps, 3rd order accurate;
7983
+ [ ] Runge-Kutta schemes:
80-
+ [ ] [low-storage](http://fortran-foss-programmers.github.io/FOODIE/module/foodie_integrator_low_storage_runge_kutta.html) schemes, see [1, 2, 3]:
84+
+ [ ] [low-storage](http://fortran-foss-programmers.github.io/FOODIE/module/foodie_integrator_runge_kutta_low_storage.html) schemes, see [1, 2, 3]:
8185
+ [x] 1 stage, namely the forward explicit Euler scheme, 1st order accurate;
8286
+ [ ] 2 stages;
8387
+ [ ] 3 stages;
@@ -88,13 +92,13 @@ FOODIE is aimed to be a KISS-pure-Fortran library for integrating Ordinary Diffe
8892
+ [x] 12 stages, 4th order accurate, 2N registers, see [10];
8993
+ [x] 13 stages, 4th order accurate, 2N registers, see [10];
9094
+ [x] 14 stages, 4th order accurate, 2N registers, see [10];
91-
+ [ ] [TVD/SSP](http://fortran-foss-programmers.github.io/FOODIE/module/foodie_integrator_tvd_runge_kutta.html) schemes, see [1]:
95+
+ [ ] [TVD/SSP](http://fortran-foss-programmers.github.io/FOODIE/module/foodie_integrator_kutta_tvd_runge.html) schemes, see [1]:
9296
+ [x] 1 stage, namely the forward explicit Euler scheme, 1st order accurate;
9397
+ [x] 2 stages, 2nd order accurate;
9498
+ [x] 3 stages, 3rd order accurate;
9599
+ [ ] 4 stages;
96100
+ [x] 5 stages, 4th order accurate;
97-
+ [ ] [embedded (adaptive)](http://fortran-foss-programmers.github.io/FOODIE/module/foodie_integrator_emd_runge_kutta.html) schemes:
101+
+ [ ] [embedded (adaptive)](http://fortran-foss-programmers.github.io/FOODIE/module/foodie_integrator_runge_kutta_embeddedd.html) schemes:
98102
+ [x] Heun-Euler, 2 stages, 2nd order accurate;
99103
+ [ ] Runge-Kutta-Fehlberg, 5 stages, 4th order accurate;
100104
+ [x] Runge-Kutta-Cash-Karp, 6 stages, 5th order accurate, see [13];
@@ -165,6 +169,8 @@ Any feature request is welcome.
165169

166170
[15] *A tenth-order Runge-Kutta method with error estimate*, Feagin, T., Proceedings of the IAENG Conf. on Scientific Computing. 2007.
167171

172+
[16] *Strong Stability Preserving Runge-Kutta and Multistep Time Discretizations*, S. Gottlieb, D. Ketcheson, C.W. Shu, 2011, 978-981-4289-26-9, doi:10.1142/7498, World Scientific Publishing Co. Pte. Ltd.
173+
168174
Go to [Top](#top)
169175

170176
## Status [![Status](https://img.shields.io/badge/status-beta-orange.svg)]()

codecov.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
coverage:
2+
ignore:
3+
- src/third_party/
4+
- doc

doc/README-FOODIE.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

doc/README-IR_Precision.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

doc/main_page.md

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
1+
---
12
project: FOODIE
2-
project_dir: ./src/
3-
output_dir: ./doc/html/publish/
3+
src_dir: ../src/lib
4+
src_dir: ../src/tests
5+
src_dir: ../src/third_party/PENF/src/lib
6+
src_dir: ../src/third_party/FACE/src/lib
7+
src_dir: ../src/third_party/FLAP/src/lib
8+
src_dir: ../src/third_party/WenOOF/src/lib
9+
10+
output_dir: html/publish/
411
project_github: https://github.com/Fortran-FOSS-Programmers/FOODIE
12+
project_download: https://github.com/Fortran-FOSS-Programmers/FOODIE/releases/latest
513
summary: Fortran Object oriented Ordinary Differential Equations integration library
614
author: Fortran-FOSS-Programmers Group
715
github: http://fortran-foss-programmers.github.io/
816
website: http://fortran-foss-programmers.github.io/
17+
email: stefano.zaghi@gmail.com
918
md_extensions: markdown.extensions.toc(anchorlink=True)
1019
markdown.extensions.smarty(smart_quotes=False)
1120
markdown.extensions.extra
@@ -17,6 +26,10 @@ display: public
1726
source: true
1827
warn: true
1928
graph: true
29+
sort: alpha
30+
print_creation_date: true
31+
creation_date: %Y-%m-%d %H:%M %z
2032
extra_mods: iso_fortran_env:https://gcc.gnu.org/onlinedocs/gfortran/ISO_005fFORTRAN_005fENV.html
2133

22-
{!README-FOODIE.md!}
34+
{!../README.md!}
35+
---

papers/announcement/errors_analysis/errors_analysis.sh

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ emd_rk=0
1010
euler=0
1111
lf=0
1212
lf_raw=0
13+
lmm_ssp=0
1314
ls_rk=0
1415
tvd_rk=0
1516

@@ -19,25 +20,23 @@ function print_usage {
1920
echo "script automotion for FOODIE's errors analysis"
2021
echo "Usage: `basename $0` #solver"
2122
echo "Valid solver switches are:"
22-
echo " -ab # => adams-bashforth"
23-
echo " -abm # => adams-bashforth-moulton"
24-
echo " -am # => adams-moulton"
25-
echo " -bdf # => backward differentiation formula"
26-
echo " -emd-rk # => embeded RK"
27-
echo " -euler # => euler"
28-
echo " -lf # => leapfrog"
29-
echo " -lf-raw # => leapfrog raw filtered"
30-
echo " -ls-rk # => low storage RK"
31-
echo " -tvd-rk # => TVD RK"
32-
echo " -all # => all solvers!"
23+
echo " -ab # => adams-bashforth"
24+
echo " -abm # => adams-bashforth-moulton"
25+
echo " -am # => adams-moulton"
26+
echo " -bdf # => backward differentiation formula"
27+
echo " -emd-rk # => embeded RK"
28+
echo " -euler # => euler"
29+
echo " -lf # => leapfrog"
30+
echo " -lf-raw # => leapfrog raw filtered"
31+
echo " -lmm-ssp # => linear multistep methods SSP"
32+
echo " -ls-rk # => low storage RK"
33+
echo " -tvd-rk # => TVD RK"
34+
echo " -all # => all solvers!"
3335
}
3436

3537
#parsing command line
3638
while [ $# -gt 0 ]; do
3739
case "$1" in
38-
# "-g")
39-
# shift; FileGRD=$1
40-
# ;;
4140
"-ab")
4241
ab=1
4342
;;
@@ -62,6 +61,9 @@ while [ $# -gt 0 ]; do
6261
"-lf-raw")
6362
lf_raw=1
6463
;;
64+
"-lmm-ssp")
65+
lmm_ssp=1
66+
;;
6567
"-ls-rk")
6668
ls_rk=1
6769
;;
@@ -144,6 +146,9 @@ fi
144146
if [ $lf_raw -eq 1 ] ; then
145147
../tests/oscillation -r -tf 1e6 --solver leapfrog-raw --ss 2 -Dt 5000.d0 2500.d0 1250.d0 625.d0 320.d0 100.d0 --errors_analysis #> analysis-leapfrog.log
146148
fi
149+
if [ $lmm_ssp -eq 1 ] ; then
150+
../tests/oscillation -r -tf 1e6 --solver lmm-ssp --ss 3 5 -Dt 5000.d0 2500.d0 1250.d0 625.d0 320.d0 100.d0 50.d0 10.d0 --errors_analysis > analysis-lmm-ssp.log
151+
fi
147152
if [ $ls_rk -eq 1 ] ; then
148153
../tests/oscillation -r -tf 1e6 --solver ls-runge-kutta --ss 1 -Dt 5000.d0 2500.d0 1250.d0 625.d0 320.d0 100.d0 --errors_analysis #> analysis-leapfrog.log
149154
../tests/oscillation -r -tf 1e6 --solver ls-runge-kutta --ss 5 7 -Dt 5000.d0 2500.d0 1250.d0 625.d0 320.d0 100.d0 --errors_analysis #> analysis-leapfrog.log
File renamed without changes.

src/lib/foodie.f90

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ module foodie
7171
use foodie_integrator_backward_differentiation_formula, only : integrator_back_df
7272
use foodie_integrator_euler_explicit, only : integrator_euler_explicit
7373
use foodie_integrator_leapfrog, only : integrator_leapfrog
74+
use foodie_integrator_lmm_ssp, only : integrator_lmm_ssp
7475
use foodie_integrator_runge_kutta_emd, only : integrator_runge_kutta_emd
7576
use foodie_integrator_runge_kutta_low_storage, only : integrator_runge_kutta_ls
7677
use foodie_integrator_runge_kutta_tvd, only : integrator_runge_kutta_tvd
@@ -85,6 +86,7 @@ module foodie
8586
public :: integrator_back_df
8687
public :: integrator_euler_explicit
8788
public :: integrator_leapfrog
89+
public :: integrator_lmm_ssp
8890
public :: integrator_runge_kutta_emd
8991
public :: integrator_runge_kutta_ls
9092
public :: foodie_integrator
@@ -162,6 +164,18 @@ function foodie_integrator(scheme, steps, stages, tolerance, nu, alpha) result(i
162164
type is(integrator_leapfrog)
163165
call integrator%init(nu=nu, alpha=alpha)
164166
endselect
167+
case('lmm_ssp')
168+
allocate(integrator_lmm_ssp :: integrator)
169+
if (present(steps)) then
170+
select type(integrator)
171+
type is(integrator_lmm_ssp)
172+
call integrator%init(steps=steps)
173+
endselect
174+
else
175+
call integrator%trigger_error(error=ERROR_MISSING_STEPS_NUMBER, &
176+
error_message='missing steps number for initializing integrator!', &
177+
is_severe=.true.)
178+
endif
165179
case('runge_kutta_emd')
166180
allocate(integrator_runge_kutta_emd :: integrator)
167181
if (present(stages)) then

src/lib/foodie_integrator_adams_bashforth.f90

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ module foodie_integrator_adams_bashforth
3636
private
3737
public :: integrator_adams_bashforth
3838

39-
character(len=99), parameter :: supported_steps='1-16' !< List of supported steps number. Valid format is `1-2,4,9-23...`.
40-
integer(I_P), parameter :: min_ss=1 !< Minimum number of steps supported.
41-
integer(I_P), parameter :: max_ss=16 !< Maximum number of steps supported.
39+
character(len=99), parameter :: supported_steps='1-16' !< List of supported steps number. Valid format is `1-2,4,9-23...`.
40+
integer(I_P), parameter :: min_ss=1 !< Minimum number of steps supported.
41+
integer(I_P), parameter :: max_ss=16 !< Maximum number of steps supported.
4242

4343
type, extends(integrator_object) :: integrator_adams_bashforth
4444
!< FOODIE integrator: provide an explicit class of Adams-Bashforth multi-step schemes, from 1st to 16th order accurate.
@@ -93,7 +93,7 @@ pure subroutine integr_assign_integr(lhs, rhs)
9393
! public methods
9494
elemental subroutine destroy(self)
9595
!< Destroy the integrator.
96-
class(integrator_adams_bashforth), intent(INOUT) :: self !< Integrator.
96+
class(integrator_adams_bashforth), intent(inout) :: self !< Integrator.
9797

9898
call self%destroy_abstract
9999
self%steps = 0

0 commit comments

Comments
 (0)