giacrossi / wenoof Goto Github PK
View Code? Open in Web Editor NEWThis project forked from fortran-foss-programmers/wenoof
WENO interpolation Object Oriented Fortran library
This project forked from fortran-foss-programmers/wenoof
WENO interpolation Object Oriented Fortran library
in https://github.com/giacombum/WenOOF/blob/master/src/lib/type_weno_interpolator_js.f90#L205 you are trying to do allocated
on a pointer... you must use associated instead of allocated
. As a matter of fact the member JS
is a pointer, see https://github.com/giacombum/WenOOF/blob/master/src/lib/type_weno_interpolator.f90#L33
After https://github.com/giacombum/WenOOF/blob/develop/src/lib/wenoof.f90#L71 an error handling must be inserted to prevent runtime errors in case of wrong alpha_base inputs: the only permitted are 'JS' and 'Z'.
The procedure to call is init_error
of JS interpolator and the case is https://github.com/giacombum/WenOOF/blob/develop/src/lib/type_weno_interpolator_js.f90#L229
Improve WENO-Z alpha formula adding the maximum order
The smoothness indicators for non-uniform grids have very long expressions for coefficients, so now the highest non-uniform WENO reconstruction implemented is WENO 3-5.
when you invoke a method, namely a TBP, you are implicitly passing an argument (if nopass is explicitely used), thus here https://github.com/giacombum/WenOOF/blob/master/src/lib/type_weno_interpolator_js.f90#L206 you are doing a simple error...
call self%IS%destroy(self%IS) ! wrong
call self%IS%destroy ! right : self%IS is passed!
When non-uniform grids are used, for optimal weights, polynomial weights and smoothness indicators coefficients evaluations the coordinate of the reconstruction point is mandatory as an argument.
The problem is that the interfaces of the routines cannot be modified (or could be modified but an optional argument must be introduced), so how this new data can be passed to the routines?
You are not using the latest master release of WenOOF git submodule, please update to the master branches.
To be sure you'll always point to the master releases, modify your .gitmodules
configuration as following:
[submodule "external/pyplot-fortran"]
path = src/third_party/pyplot-fortran
url = https://github.com/jacobwilliams/pyplot-fortran
branch = master
[submodule "src/third_party/PENF"]
path = src/third_party/PENF
url = https://github.com/szaghi/PENF
branch = master
Note the additions of branch = master
option.
Maybe is necessary an associate construct for IS_type in https://github.com/giacombum/WenOOF/blob/master/src/lib/type_weno_interpolator_js.f90#L146? The pointer seems not associate, maybe the problem is that the call at https://github.com/giacombum/WenOOF/blob/master/src/lib/type_weno_interpolator_js.f90#L146 doesn't pass the right argument?
Maybe for the interpolator in the master branch (for uniform grids) could be intresting to replicate the Shu-Osher test that @szaghi has on his own repository.
Add WENO-AMM alpha coefficients
Correct the cell index examples into the routine create
of the file type_weno_smoothness_indicators_js.f90
After the commit ded4f4f I obtain the following error with intel compiler:
Compiling src/lib/type_weno_interpolator_js.f90 serially src/lib/type_weno_interpolator_js.f90(159): error #6460: This is not a field name that is defined in the encompassing structure. [ALPHA_BASE] call self%alpha%alpha_base%create(S = self%S) ----------------------^ src/lib/type_weno_interpolator_js.f90(159): error #6460: This is not a field name that is defined in the encompassing structure. [CREATE] call self%alpha%alpha_base%create(S = self%S) ---------------------------------^ src/lib/type_weno_interpolator_js.f90(126): remark #7712: This variable has not been used. [ALPHA_BASE_TYPE] subroutine create(self, constructor, IS_type, alpha_type, alpha_base_type, weights_opt_type, polynomial_type) ------------------------------------------------------------^ compilation aborted for src/lib/type_weno_interpolator_js.f90 (code 1)
With gfortran compiler the error is:
`Compiling src/lib/type_weno_interpolator_js.f90 serially
src/lib/type_weno_interpolator_js.f90:159:32:
call self%alpha%alpha_base%create(S = self%S)
1
Error: ‘alpha_base’ at (1) is not a member of the ‘weno_alpha_coefficient’ structure`
Add 15th (r=8) and 17th (r=9) order Jiang and Shu polynomials coefficients into the file type_weno_polynomials_js.f90
from the paper Very-high-order weno schemes, G. A. Gerolymos, D. Sénéchal, I. Vallet, JCP, 2009, vol. 228, pp. 8481-8524, doi:10.1016/j.jcp.2009.07.039
The functions weno_exp and tau maybe have to be changed in something new according to the following papers:
High Order Weighted Essentially Non-Oscillatory WENO-Z schemes for Hyperbolic Conservation Laws, Castro, Marcos and Costa, Bruno and Don, Wai Sun, JCP, 2011, vol. 230, pp. 1766--1792, doi:10.1016/j.jcp.2010.11.028
Accuracy of the weighted essentially non-oscillatory conservative finite difference schemes, Don, Wai-Sun and Borges, Rafael, JCP, 2013, vol. 250, pp. 347--372, doi:10.1016/j.jcp.2013.05.018
An improved weighted essentially non-oscillatory scheme for hyperbolic conservation laws, Borges, Rafael and Carmona, Monique and Costa, Bruno and Don, Wai Sun, JCP, 2008, vol. 227, pp. 3191--3211. doi:10.1016/j.jcp.2007.11.038
Add recursive order reduction strategy as implemented in G.A. Gerolymos, D. Senechal, and I. Vallet,
Very-High-Order WENO Schemes, AIAA 47. Aerospace Sciences Meeting, Orlando, [ FL, USA], Jan. 5-8, 2009
Add 15th (r=8) and 17th (r=9) order Jiang and Shu smoothness indicators coefficients into the file type_weno_smoothness_indicators_js.f90
from the paper Very-high-order weno schemes, G. A. Gerolymos, D. Sénéchal, I. Vallet, JCP, 2009, vol. 228, pp. 8481-8524, doi:10.1016/j.jcp.2009.07.039
With commit 0063bb1 a new API for alpha coefficients has been introduced in WenOOF: this API structure could also applied to IS, polynomials and maybe weights type. It is convenient to do so? To have a similar structure in all the types? Or the other types can remain the same?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.