pressio / pressio-tutorials Goto Github PK
View Code? Open in Web Editor NEWTutorials for the C++ pressio library
License: Other
Tutorials for the C++ pressio library
License: Other
we are repeating hte algorith name, so just use onlineRom for the section and keep the algo name distinct
BEFORE this, we need to complete #27
ensure the workflow scripts execute the correct steps and product the correct dir structure.
To do this, for each driver script, we want to test various workflows by setting up combinations of workflow yaml files.
We can start from the yaml files arelady in the end-to-end-roms subdirs but need to test various combinations that exercise the workflow drivers properly.
@eparish1 can you please use this issue to track progress for this tutorial?
and when you are ready open merge request
add tutorial showing galerkin using random data and a FOM that not necessarily has any physical meaning.
The point of the tutorial is to show the pieces needed
Tutorials 1 and 2 compile and run fine. Tutorial 3 gives the following error:
install/include/ode/src/explicit/./impl/ode_explicit_euler_stepper_impl.hpp:178:5: error: no matching function for call to 'update'
::pressio::ops::update(stateInOut, one, auxRhs0, dt);
FYI, I am using a custom builder, not cmake.
should be simple enough to setup since we just need to follow the build instructions of the website
can we do this better?
The only constraint we have is that a driver file HAS be run from within the build directory.
# set working directory to where we call this file from
workDirFullPath = os.path.realpath(".")
print("workingDir =", workDirFullPath)
# ensure this is NEVER called directly from the tutorials repo
# because we want to this to be called from within the build
# directory of the tutorials or any other place
# except the tutorials source.
if is_git_repo(workDirFullPath):
print("you cannot run this script from the tutorials repo!")
sys.exit(23)
# find full path to the top-level tutorials repo
ptutRepoFullPath = str(os.path.split(os.path.dirname(__file__))[0])
print("PTUT repo =", ptutRepoFullPath)
ptutRepoEndToEndFullPath = ptutRepoFullPath + '/end-to-end-roms'
# read the full workflow dic
wfDic = read_workflow_yaml_file(workDirFullPath+'/'+wfFile)
assert_valid_and_supported_problem(wfDic, ptutRepoEndToEndFullPath)
problemName = find_problem_name_from_wf_dic(wfDic)
# import customizations from target problem
# we can do this safely because we already asserted customization exists
moduleName = 'customizations_'+problemName
sys.path.append(os.path.realpath(ptutRepoEndToEndFullPath+'/'+moduleName))
print("Loading customizations from {}".format(moduleName))
customModule = importlib.import_module(moduleName)
check if all these support --dryrun=True
cmd line arg. If not, then add support for that (separate PR for each)
That option is useful if one wants to check overall what happens but wihtout running expensive things.
If enabled, the scripts should run without producing any data, but just setting up the directory structure and inputs file.
Patrick suggested: Should we define acronyms like FOM, POD, SWE, and maybe even ROM somewhere?
I'm trying to install and build the pressio-tutorial examples as per the instructions provided at
https://pressio.github.io/pressio-tutorials/build.html
I have PRESSIO_SRC set to the right path.
I am getting errors of the following type:
/mnt/c/Work/Ubuntu/Software/github/pressio-tutorials/ode-using-eigen-types/main1.cc:48:10: fatal error: pressio/ode_advancers.hpp: No such file or directory
48 | #include "pressio/ode_advancers.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
/mnt/c/Work/Ubuntu/Software/github/pressio-tutorials/ode-using-eigen-types/tutorial2/main.cc:48:10: fatal error: pressio/ode_advancers.hpp: No such file or directory
48 | #include "pressio/ode_advancers.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [ode-using-eigen-types/CMakeFiles/ode_eigen_exe1.dir/build.make:76: ode-using-eigen-types/CMakeFiles/ode_eigen_exe1.dir/main1.cc.o] Error 1
make[2]: *** [ode-using-eigen-types/tutorial2/CMakeFiles/ode_eigen_exe2.dir/build.make:76: ode-using-eigen-types/tutorial2/CMakeFiles/ode_eigen_exe2.dir/main.cc.o] Error 1
/mnt/c/Work/Ubuntu/Software/github/pressio-tutorials/ode-using-eigen-types/tutorial3/main.cc:48:10: fatal error: pressio/ode_advancers.hpp: No such file or directory
48 | #include "pressio/ode_advancers.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 72%] Built target yaml-cpp
make: *** [Makefile:101: all] Error 2
The headers appear to be in
/mnt/c/Work/Ubuntu/Software/github/pressio/install/include/pressio
What am I missing? Is there a way to provide the headers to CMAke?
Thanks,
Nachiket
The currrent code in the tutorials contains lots of descriptions/comments, which is more suited to be moved to the website which actually described the tutorial. This way the code becomes more readable, we have more flexibility to edit the descriptions and don't need to change the source files.
BEFORE doing this, #29 has to be done
we need to test all the functions inside all.py
I've been able to install pressio-tutorials and I'm able to run 2D SWE: hyper-reduced LSPG
https://pressio.github.io/pressio-tutorials/endtoend/swe_lspg_hypred_1.html
I've been able to install pressio-demoapps and I've been able to run the 2d Burgers' code
https://pressio.github.io/pressio-demoapps/burgers_2d_periodic.html
How would I go about doing hyper-reduction for 2D Burgers? Do I just need a new workflow file? Or, do I need to modify the driver files (wf_foms.py etc) residing in the following directory?
https://github.com/Pressio/pressio-tutorials/tree/develop/end-to-end-roms
Or, is there something else I need to do?
Thanks,
Nachiket
solvers_nonlinear
ode_advancers
advance_n_times
advance_n_times_and_observe
advance_n_times
with custom dt setteradvance_n_times_and_observe
with custom dt setter andode_steppers
rom
This code has a few dependencies that are currently snapshotted inside the repo itself, either by copy the whole code or via github submodules.
I would like to change this somehow. I don't yet know the best way so I like a few options proposed.
IMPORTANT: the reference branch to work off is develop
since main is old and not updated.
complete tutorial on LSPG using Eigen
the page should be similar to the linear decoder
default galerkin:
hyperreduced galerkin
masked galerkin
default lspg
masked lspg
hyperreduced galerkin
end-to-end-roms/all.py cntains lots of functions. I like to separate them into multiple files logically.
And of course, the wf_*.py drivers have to be updated as a consequence.
Pressio vs pressio vs PRESSIO, etc.
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.