Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: Fortran-FOSS-Programmers/FOODIE
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.2.5
Choose a base ref
...
head repository: Fortran-FOSS-Programmers/FOODIE
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Loading
Showing with 8,224 additions and 3,458 deletions.
  1. +5 −5 .travis.yml
  2. +1 −1 README.md
  3. +23 −12 fobos
  4. +42 −0 src/app/euler_1D/fobos
  5. +11 −0 src/app/euler_1D/foodie_euler_1D.f90
  6. +1,142 −0 src/app/euler_1D/foodie_integrand_euler_1D.f90
  7. +87 −71 src/lib/foodie.f90
  8. +0 −92 src/lib/foodie_adt_integrand.f90
  9. +206 −0 src/lib/foodie_integrand_object.F90
  10. +371 −0 src/lib/foodie_integrator_adams_bashforth.F90
  11. +0 −371 src/lib/foodie_integrator_adams_bashforth.f90
  12. +88 −50 ...b/{foodie_integrator_adams_bashforth_moulton.f90 → foodie_integrator_adams_bashforth_moulton.F90}
  13. +115 −86 src/lib/{foodie_integrator_adams_moulton.f90 → foodie_integrator_adams_moulton.F90}
  14. +83 −76 ...or_backward_differentiation_formula.f90 → foodie_integrator_backward_differentiation_formula.F90}
  15. +153 −0 src/lib/foodie_integrator_euler_explicit.F90
  16. +0 −113 src/lib/foodie_integrator_euler_explicit.f90
  17. +261 −0 src/lib/foodie_integrator_leapfrog.F90
  18. +0 −181 src/lib/foodie_integrator_leapfrog.f90
  19. +242 −0 src/lib/foodie_integrator_lmm_ssp.F90
  20. +0 −235 src/lib/foodie_integrator_lmm_ssp.f90
  21. +338 −0 src/lib/foodie_integrator_lmm_ssp_vss.F90
  22. +0 −299 src/lib/foodie_integrator_lmm_ssp_vss.f90
  23. +152 −111 src/lib/{foodie_integrator_ms_runge_kutta_ssp.f90 → foodie_integrator_ms_runge_kutta_ssp.F90}
  24. +214 −0 src/lib/foodie_integrator_multistage_multistep_object.F90
  25. +153 −0 src/lib/foodie_integrator_multistage_object.F90
  26. +192 −0 src/lib/foodie_integrator_multistep_object.F90
  27. +51 −5 src/lib/{foodie_integrator_object.f90 → foodie_integrator_object.F90}
  28. +157 −93 src/lib/{foodie_integrator_runge_kutta_embedded.f90 → foodie_integrator_runge_kutta_embedded.F90}
  29. +73 −52 ...b/{foodie_integrator_runge_kutta_low_storage.f90 → foodie_integrator_runge_kutta_low_storage.F90}
  30. +146 −77 src/lib/{foodie_integrator_runge_kutta_lssp.f90 → foodie_integrator_runge_kutta_lssp.F90}
  31. +77 −54 src/lib/{foodie_integrator_runge_kutta_ssp.f90 → foodie_integrator_runge_kutta_ssp.F90}
  32. +7 −0 src/lib/preprocessor_macros.h
  33. +0 −5 src/tests/accuracy/README.md
  34. +0 −1,099 src/tests/accuracy/oscillation/oscillation.f90
  35. +0 −244 src/tests/accuracy/oscillation/oscillation_oscillator.f90
  36. +3 −3 src/tests/{accuracy/oscillation → lcce}/fobos
  37. +661 −0 src/tests/lcce/foodie_test_lcce.f90
  38. 0 src/tests/{accuracy → }/oscillation/Makefile
  39. +127 −0 src/tests/oscillation/fobos
  40. +670 −0 src/tests/oscillation/foodie_test_oscillation.f90
  41. 0 src/tests/{ → quarantena}/parallel/README.md
  42. 0 src/tests/{ → quarantena}/parallel/euler-1D-caf-no-foodie/euler-1D-caf_no_foodie.f90
  43. 0 src/tests/{ → quarantena}/parallel/euler-1D-caf-no-foodie/fobos
  44. 0 src/tests/{ → quarantena}/parallel/euler-1D-caf-no-foodie/type_euler-1D-caf_no_foodie.f90
  45. 0 src/tests/{ → quarantena}/parallel/euler-1D-caf/euler-1D-caf.f90
  46. 0 src/tests/{ → quarantena}/parallel/euler-1D-caf/fobos
  47. 0 src/tests/{ → quarantena}/parallel/euler-1D-caf/type_euler-1D-caf.f90
  48. 0 src/tests/{ → quarantena}/parallel/euler-1D-openmp-no-foodie/euler-1D-openmp_no_foodie.f90
  49. 0 src/tests/{ → quarantena}/parallel/euler-1D-openmp-no-foodie/fobos
  50. 0 src/tests/{ → quarantena}/parallel/euler-1D-openmp-no-foodie/type_euler-1D-openmp_no_foodie.f90
  51. +1 −1 src/tests/{ → quarantena}/parallel/euler-1D-openmp/euler-1D-openmp.f90
  52. 0 src/tests/{ → quarantena}/parallel/euler-1D-openmp/fobos
  53. +213 −116 src/tests/{ → quarantena}/parallel/euler-1D-openmp/type_euler-1D-openmp.f90
  54. 0 src/tests/{ → quarantena}/regression/README.md
  55. 0 src/tests/{ → quarantena}/regression/burgers/Makefile
  56. 0 src/tests/{ → quarantena}/regression/burgers/burgers.f90
  57. 0 src/tests/{ → quarantena}/regression/burgers/fobos
  58. 0 src/tests/{ → quarantena}/regression/burgers/type_burgers.f90
  59. 0 src/tests/{ → quarantena}/regression/euler-1D/Makefile
  60. 0 src/tests/{ → quarantena}/regression/euler-1D/euler-1D.f90
  61. 0 src/tests/{ → quarantena}/regression/euler-1D/fobos
  62. 0 src/tests/{ → quarantena}/regression/euler-1D/sod-exact-solution-t02-100_cells.dat
  63. 0 src/tests/{ → quarantena}/regression/euler-1D/type_euler-1D.f90
  64. 0 src/tests/{ → quarantena}/regression/lorenz/Makefile
  65. 0 src/tests/{ → quarantena}/regression/lorenz/fobos
  66. 0 src/tests/{ → quarantena}/regression/lorenz/lorenz.f90
  67. 0 src/tests/{ → quarantena}/regression/lorenz/type_lorenz.f90
  68. +66 −0 src/tests/tester/fobos
  69. +619 −0 src/tests/tester/foodie_test_integrand_ladvection.f90
  70. +458 −0 src/tests/tester/foodie_test_integrand_lcce.f90
  71. +472 −0 src/tests/tester/foodie_test_integrand_oscillation.f90
  72. +90 −0 src/tests/tester/foodie_test_integrand_tester_object.f90
  73. +413 −0 src/tests/tester/foodie_tester.f90
  74. +1 −1 src/third_party/FACE
  75. +1 −1 src/third_party/FLAP
  76. +1 −1 src/third_party/PENF
  77. +1 −1 src/third_party/WenOOF
  78. +33 −1 src/third_party/fobos
  79. +1 −0 src/third_party/lib/flap/.flap.f90.cflags.heritage
  80. +1 −0 src/third_party/lib/pyplot-fortran/.pyplot_module.f90.cflags.heritage
  81. +1 −0 src/third_party/lib/wenoof/.wenoof.f90.cflags.heritage
  82. +1 −1 src/third_party/pyplot-fortran
10 changes: 5 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ addons:
sources:
- ubuntu-toolchain-r-test
packages:
- gfortran-6
- gfortran-9
- binutils
- python-pip
- graphviz
@@ -38,10 +38,10 @@ install:
mkdir "$HOME/.local/bin"
fi
- export PATH="$HOME/.local/bin:$PATH"
- export FC=/usr/bin/gfortran-6
- ln -fs /usr/bin/gfortran-6 "$HOME/.local/bin/gfortran" && gfortran --version
- ls -l /usr/bin/gfortran-6
- ln -fs /usr/bin/gcov-6 "$HOME/.local/bin/gcov" && gcov --version
- export FC=/usr/bin/gfortran-9
- ln -fs /usr/bin/gfortran-9 "$HOME/.local/bin/gfortran" && gfortran --version
- ls -l /usr/bin/gfortran-9
- ln -fs /usr/bin/gcov-9 "$HOME/.local/bin/gcov" && gcov --version
- pip install --user --upgrade pygooglechart
- pip install --user --upgrade graphviz
- pip install --user --upgrade FoBiS.py
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -31,7 +31,7 @@

## What is FOODIE?

Modern Fortran standards (2003+) have introduced support for Object-Oriented Programming (OOP). Exploiting new features like Abstract Data Type (ADT) is now possible to develop a KISS library providing an awesome environment for the numerical integration of Differential-equations such as Ordinary and Partial Differential Eqautions (ODE, PDE). FOODIE is tailored to the systems arising from the semi-discretization of PDEs, but it is not limited to them.
Modern Fortran standards (2003+) have introduced support for Object-Oriented Programming (OOP). Exploiting new features like Abstract Data Type (ADT) is now possible to develop a KISS library providing an awesome environment for the numerical integration of Differential-equations such as Ordinary and Partial Differential Equations (ODE, PDE). FOODIE is tailored to the systems arising from the semi-discretization of PDEs, but it is not limited to them.

The FOODIE environment allows the (numerical) solution of general, non linear differential equations system of the form:

35 changes: 23 additions & 12 deletions fobos
Original file line number Diff line number Diff line change
@@ -15,6 +15,12 @@ $CSTATIC_INT = -cpp -c -assume realloc_lhs
$DEBUG_GNU = -Og -g3 -Warray-bounds -Wcharacter-truncation -Wline-truncation -Wimplicit-interface -Wimplicit-procedure -Wunderflow -Wuninitialized -fcheck=all -fmodule-private -ffree-line-length-132 -fimplicit-none -fbacktrace -fdump-core -finit-real=nan -std=f2008 -fall-intrinsics
$DEBUG_INT = -O0 -debug all -check all -warn all -extend-source 132 -traceback -gen-interfaces -fp-stack-check -fstack-protector-all -ftrapuv -no-ftz -std08
$OPTIMIZE = -O2
$EXDIRS = quarantena
FACE/src/tests FACE/src/third_party/
FLAP/src/tests/ FLAP/src/third_party/
PENF/src/tests/ PENF/src/third_party/
pyplot-fortran/src/tests/
WenOOF/src/tests/ WenOOF/src/third_party/

# main modes
[foodie-static-opencoarrays-gnu]
@@ -177,7 +183,8 @@ cflags_heritage = True
build_dir = ./build/lib/
mod_dir = mod
obj_dir = obj
src = src/lib/
src = src/
exclude_dirs = $EXDIRS
target = foodie.f90
colors = True
quiet = False
@@ -212,17 +219,21 @@ rule = tar --xform="s%^%FOODIE/%" -czf FOODIE.tar.gz *

[rule-makecoverage]
help = Rule for performing coverage analysis
rule_1 = FoBiS.py build -f src/tests/accuracy/oscillation/fobos -mode gnu-coverage
rule_2 = ./build/tests/accuracy/oscillation/oscillation -s all
rule_3 = rm -f build/tests/accuracy/oscillation/obj/penf* build/tests/accuracy/oscillation/obj/face* build/tests/accuracy/oscillation/obj/flap* build/tests/accuracy/oscillation/obj/wenoof*
rule_4 = gcov -o build/tests/accuracy/oscillation/obj/ src/lib/foodie*
rule_5 = rm -f *.gcov
rule_1 = FoBiS.py build -f src/tests/tester/fobos -mode gnu-coverage
rule_2 = ./build/tests/tester/foodie_tester lcce test -ft 2 -Dt 1e-1 1e-2
rule_3 = ./build/tests/tester/foodie_tester linear_advection -is sin_wave --weno-order 3 test -s runge_kutta_ls -ft 1 -Dt 8e-3 2e-3
rule_4 = ./build/tests/tester/foodie_tester oscillation test -ft 1e4 -Dt 1e1 0.5e1
rule_5 = rm -f build/tests/tester/obj/penf* build/tests/tester/obj/face* build/tests/tester/obj/flap* build/tests/tester/obj/penf* build/tests/tester/obj/wenoof*
rule_6 = gcov -o build/tests/tester/obj/ src/lib/foodie*
rule_7 = rm -f *.gcov

[rule-coverage-analysis]
help = Rule for performing coverage analysis and saving reports in markdown
rule_1 = FoBiS.py build -f src/tests/accuracy/oscillation/fobos -mode gnu-coverage
rule_2 = ./build/tests/accuracy/oscillation/oscillation -s all
rule_3 = rm -f build/tests/accuracy/oscillation/obj/penf* build/tests/accuracy/oscillation/obj/face* build/tests/accuracy/oscillation/obj/flap* build/tests/accuracy/oscillation/obj/wenoof*
rule_4 = gcov -o build/tests/accuracy/oscillation/obj/ src/lib/foodie*
rule_5 = FoBiS.py rule -gcov_analyzer wiki/ Coverage-Analysis
rule_6 = rm -f *.gcov
rule_1 = FoBiS.py build -f src/tests/tester/fobos -mode gnu-coverage
rule_2 = ./build/tests/tester/foodie_tester lcce test -ft 2 -Dt 1e-1 1e-2
rule_3 = ./build/tests/tester/foodie_tester linear_advection -is sin_wave --weno-order 3 test -s runge_kutta_ls -ft 1 -Dt 8e-3 2e-3
rule_4 = ./build/tests/tester/foodie_tester oscillation test -ft 1e4 -Dt 1e1 0.5e1
rule_5 = rm -f build/tests/tester/obj/penf* build/tests/tester/obj/face* build/tests/tester/obj/flap* build/tests/tester/obj/penf* build/tests/tester/obj/wenoof*
rule_6 = gcov -o build/tests/tester/obj/ src/lib/foodie*
rule_7 = FoBiS.py rule -gcov_analyzer wiki/ Coverage-Analysis
rule_8 = rm -f *.gcov
42 changes: 42 additions & 0 deletions src/app/euler_1D/fobos
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
[modes]
modes = gnu gnu-debug

[common-variables]
$CSTATIC_GNU = -cpp -c -frealloc-lhs
$DEBUG_GNU = -Og -g3 -Warray-bounds -Wcharacter-truncation -Wline-truncation -Wimplicit-interface -Wimplicit-procedure -Wunderflow -Wuninitialized -fcheck=all -fmodule-private -ffree-line-length-132 -fimplicit-none -fbacktrace -fdump-core -finit-real=nan -std=f2008 -fall-intrinsics
$OPTIMIZE = -O2
$EXDIRS = src/tests/
PENF/src/tests/
FACE/src/tests/ FACE/src/third_party/
FLAP/src/tests/ FLAP/src/third_party/
WenOOF/src/tests/ WenOOF/src/third_party/

# main modes
[gnu]
help = Build app in release mode with GNU gfortran
compiler = gnu
cflags = $CSTATIC_GNU $OPTIMIZE
lflags = $OPTIMIZE
template = template-common

[gnu-debug]
help = Build app in debug mode with GNU gfortran
compiler = gnu
cflags = $CSTATIC_GNU $DEBUG_GNU
lflags = $DEBUG_GNU
template = template-common

# templates
[template-common]
cflags_heritage = True
build_dir = build/app/euler_1D/
mod_dir = mod
obj_dir = obj
src = src/
target = src/app/euler_1D/foodie_euler_1D.f90
preproc = -D_IMPURE_
exclude_dirs = $EXDIRS
colors = True
quiet = False
log = True
jobs = 10
11 changes: 11 additions & 0 deletions src/app/euler_1D/foodie_euler_1D.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
!< Euler 1D PDE solver based on FOODIE library.
program foodie_euler_1D
!< Euler 1D PDE solver based on FOODIE library.

use foodie_integrand_euler_1D, only : integrand_euler_1D
implicit none

type(integrand_euler_1D) :: euler_1D !< Euler 1D integrand field.

call euler_1D%integrate
endprogram foodie_euler_1D
Loading