This repository contains two closely related workflows for stochastic acoustic wave propagation:
acoustic_MCS/implements Monte Carlo simulations (serial and MPI) together with scripts for generating Karhunen–Loève/PCE data and meshes.NISP_wave/implements non-intrusive spectral projection (NISP) with sparse quadrature, sharing the same preprocessing utilities.matlab_scripts/provides MATLAB post-processing utilities for inspecting Monte Carlo outputs (MCS_pdf,MCS_variance) and for comparing solver results against reference data (MCS_process).
acoustic_MCS/preprocess.sh– builds KLE/PCE data (klePceData/) and meshes (meshData/) viagfortranandgmsh.acoustic_parallel_MCS.py,acoustic_parallel_3RV.py,acoustic_pdf.py– Monte Carlo drivers (MPI-enabled).klePceData/,meshData/,ssfem_solver/– generated input data, mesh converters, and reference CSV outputs from the SSFEM solver.
NISP_wave/preprocess.sh,quad.sh– same preprocessing pipeline plus UQTk quadrature generation.nisp_serial.py,nisp_parallel*.py,nisp_SparseQuad.py– NISP solvers matching different execution modes.serial/,quadData/,klePceData/,meshData/– solver outputs and reusable data.
matlab_scripts/MCS_pdf.m– aggregates PDF samplesu_pdf_*.matfromoutputs/<case>/...to a singleu_pdf.mat.MCS_variance.m– computes confidence bounds across experiments stored underoutputs/3rv_sigma1/3rv_pdf_<idx>/.MCS_process.m– loads Monte Carlo results plus SSFEM reference CSV files to compare mean/variance histories.
.gitignore– ignores heavy generated data (outputs/, solver.matfiles, etc.).
- Python 3 with
dolfin/FEniCS,numpy,scipy,mpi4py. - GNU Fortran (
gfortran) for building KLE/PCE data generators. gmshfor mesh generation.- UQTk binaries for quadrature generation (referenced in
NISP_wave/quad.sh). - MATLAB (or Octave) for the scripts inside
matlab_scripts/. - MPI runtime (e.g., OpenMPI) for parallel simulations.
-
Preprocess shared data
cd acoustic_MCS ./preprocess.sh # builds klePceData/ and meshData/ cd ../NISP_wave ./preprocess.sh # builds equivalent data for NISP ./quad.sh # generates quadrature points via UQTk
Adjust mesh density (
lc) and UQTk parameters inside the scripts as needed. -
Run simulations
- Monte Carlo (MPI):
This produces
mpirun -np <ranks> python3 acoustic_parallel_MCS.py
u_MCS_mean.mat,u_MCS_sd.mat,nS.mat, etc., which remain untracked because of.gitignore. - NISP:
Outputs such as
python3 nisp_serial.py # or mpirun -np <ranks> python3 nisp_parallel1.pyserial/d3l*/u_nisp_{mean,sd}.matare likewise ignored.
- Monte Carlo (MPI):
-
Post-process in MATLAB
matlab_scripts/MCS_pdf.mexpects Monte Carlo pdf chunks underoutputs/3rv_sigma3/3rv_sigma3_pdf_20/.matlab_scripts/MCS_variance.mreads aggregated pdf files underoutputs/3rv_sigma1/3rv_pdf_<idx>/.matlab_scripts/MCS_process.mcompares Monte Carlo results against reference CSVs underacoustic_MCS/ssfem_solver/13k_3rv_3s/. Each script now infers the repository root automatically:
script_dir = fileparts(mfilename('fullpath')); repo_root = fileparts(script_dir);
Update the case-specific subdirectories at the top of each script to match your experiment layout.
All deleted .mat artifacts are solver outputs and can be regenerated:
- NISP results (
NISP_wave/serial/d3l*/u_nisp_mean.mat,u_nisp_sd.mat): rerunnisp_serial.pyor the desired parallel variant. - Monte Carlo summaries (
acoustic_MCS/u_MCS_mean.mat,u_MCS_sd.mat,nS.mat): rerunacoustic_parallel_MCS.py(or related scripts). - PDF chunk consolidation: run
matlab_scripts/MCS_pdf.mafter Monte Carlo chunk generation.
If additional heavy outputs should remain local only, add their patterns to .gitignore.
Contact : Sudhi Sharma P V : sudhisharmapadillath@gmail.com