{"id":20877580,"url":"https://github.com/philipvinc/pincosimulator","last_synced_at":"2026-04-21T18:02:12.247Z","repository":{"id":151932731,"uuid":"107983561","full_name":"PhilipVinc/PincoSimulator","owner":"PhilipVinc","description":"A scalable Framework for parallel, distributed Montecarlo Trajectory-style physics simulation.","archived":false,"fork":false,"pushed_at":"2019-07-12T12:37:58.000Z","size":1182,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-19T09:40:18.509Z","etag":null,"topics":["mpi","multithreaded","physics-simulation","trajectory"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PhilipVinc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-23T13:08:36.000Z","updated_at":"2019-07-12T12:38:00.000Z","dependencies_parsed_at":"2023-05-18T02:45:20.772Z","dependency_job_id":null,"html_url":"https://github.com/PhilipVinc/PincoSimulator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhilipVinc%2FPincoSimulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhilipVinc%2FPincoSimulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhilipVinc%2FPincoSimulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PhilipVinc%2FPincoSimulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PhilipVinc","download_url":"https://codeload.github.com/PhilipVinc/PincoSimulator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243251334,"owners_count":20261189,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mpi","multithreaded","physics-simulation","trajectory"],"created_at":"2024-11-18T06:57:30.034Z","updated_at":"2025-12-11T18:21:17.220Z","avatar_url":"https://github.com/PhilipVinc.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔴 PincoSimulatorFramework (and TWMCSimulator) 🔴\n\nA scalable Framework for parallel, distributed Montecarlo Trajectory-style physics simulation.\nSeveral TWMC simulation kernels is included.\n\n## Description\n\n### Framework\n\nThis framework is an ongoing work during my Ph.D. to help scale my numerical simulations. \nThe idea is that if one specifies the common input and ouput of a numerical solver, the\nframework will take care of the rest, namely multithreading, distributed processing, \nserialization during inter-process communication and Input/Ouput. Because the same problem \nmight have, depending on the parameters, different 'best' solvers, it is easy to write\nmultiple solvers and select the best one at startup. Numerous points to plug oneself in\nhave been provided so that the system is heavily customizable.\n\nThe library also contains some experimental OpenCL kernels to run on the GPU, which \nare currently unstable.\n\nThis framework comes with a set of Matlab Utilities designed to read the standard binary \ndata format, and perform some analysis if one desires. \n\n### TWMC\n\nA set of Truncated Wigner Monte Carlo (TWMC) kernels are included with the code. It is possible\nto simulate 1D, 2D or 1D Lieb Driven-Dissipative Bose-Hubbard lattices with or without PBC \nand with or without disorder. In the case of uniform hopping constant, a Fast Fourier Transform\nis used to compute the dispersion contribution in k-space, with a cost O(Nlog(N)) instead of \nO(N^2).\n\n\n##  Installation\n\n### Dependencies\n\nPrerequisites:\n\t\n\tHard Dependencies\n    - C++14 compiler \n    - CMake 3 (for generating the makefile)\n    - Boost::filesystem \u003e= 1.6 (or C++17Filesystem)\n    - FFTW3 \n    \n    Header only libraries (included)\n    - Eigen3 \n    - CLI 11 (Input parsing)\n    - Easylogging++ (logging library)\n    - CPPTOML (.toml/.ini file parsing)\n\nNote: Boost::filesystem is not necessary if one has a C++17 compiler with Filesystem-TF \nsupport.\n\nOptionals:\n\n    - MPI Dispatch Support ( -DCOMPILE_MPI=ON )\n        - Cereal (\u003e1.2)\n        - MPI\n\n    - GPU Kernels Support ( -DCOMPILE_GPU=ON )\n        - OpenCL (\u003e1.0)\n        - VexCL\n\n### Compilation\n\nTo compile the code you will need CMake 3:\n    \n    cd PincoSimulator\n    mkdir build \u0026\u0026 cd build\n    cmake -DCMAKE_BUILD_TYPE=Release -DCOMPILE_GPU=OFF ..\n    make -j 8 sim\n\n#### Cmake build Options\n\n    COMPILE_GPU [Default=OFF] Enable GPU Support for supported solvers.\n    COMPILE_MPI [Default=OFF] Enable MPI Support for all Managers.\n    PROFILE_MPI [Default=OFF] Enable MPE Profiling Layer for MPI.\n\n    DEIGEN3_INCLUDES Path to the parent folder of the Eigen3/ header folder.\n    DCEREAL_INCLUDES Path to the parent folder of the Cereal/ header folder.\n\n## Usage Instructions\n\nTo run:\n\n    ./sim -i INPUTFILE.ini (-o OUTPUTFOLDER)\n    ./sim -i INPUTFODER (with INPUTFOLDER/_sim.ini existing)\n\ncheck test-sim.ini for a sample input file\n\n### Options\n\n#### Logging\n\n    logpath     : path to where a logfile should be stored\n    nocout      : [true]/false - if we should print to std::cout what is logged to file (default false)\n\n#### General \n\n    chunk_size  : [default=4] maximum chunk size (in GB)\n    ppn         : [default=softhreads] maximum number of threads per process.\n\n###  Matrix Input Instructions\n\nTo define Specify a matrix U:\n\n    - If the matrix is uniform (all values equal)\n        - if it is real\n            * U = value\n        - if it is complex\n            * U = re + i im\n            or\n            * U_real = re\n            * U_imag = im\n\n    - If the matrix has different values at each entry:\n        * U = filename.dat\n        and store into filename.dat the data for the matrix. If it is complex,\n        interwine real and imaginary data in succession (so re(1,1) imag(1,1) re(1,2)...)\n        and separate values with a tab.\n    \nTo add noise to the matrix:\n\n    - If there is NOISE set the following:\n        * U.Noise_Type = NOISETYPE\n        * U.Noise_Val_0 = NOISEVAR0\n        * U.Noise_Val_1 = NOISEVAR1\n        ...\n        \n        - NOISETYPES:\n        *Gaussian\n        *Uniform\n        *None\n        \n    - The variables are either real/complex values or matrices, defined as specified before.\n        - Noise_Val_0 = AMPLITUDE_Matrix\n        \n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilipvinc%2Fpincosimulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilipvinc%2Fpincosimulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilipvinc%2Fpincosimulator/lists"}