Repository files navigation

.github/workflows/github-ci.yml

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

by Qingfeng Xia
Research Software Engineering Group of UKAEA
License: LGPL v2.1
Copyright UKAEA, 2019~2020

Dr Andrew Davis of UKAEA, has contributed his technical insight, test geometries and other support to this software project. Also thank to my colleagues Dr John Nonweiler, Dr Jonathon Shimwell, etc. for testing and reviewing this software.

doxygen generated API documentation with wiki pages

Overview

Although this software aims to be a framework for more CAE/CAE preprocessing operatons, currently, this software provides only multi-threading geometry imprint and collision check, via command line user interface. This software has demonstrated faster and more controllable geometry imprinting on large geometry assemblies (10k+ parts) that is not possible on most existing CAD tools.

Technical backgroud will be added later

Disclaimer

This is NOT a production quality software, but a prototype to demonstrate the potential of accelereating CAE preprocessing by massive-parallel on HPC. We would like to apply more good practice in research software engineering, once resource is available.

According to the open source license, there is no warranty for this free library

Platforms supported

This project has been designed to be cross-platform, but only Linux is supported as the baseline platform.

  • Ubuntu as the primary/baseline development platform, with deb binary package generated

  • Fedora, Centos can compile ppp from source, with OpenCascade 7.x source code or copr package.

  • Centos8 should work without much effort; Centos7 software stack is outdated, using docker/singularity instead.

  • Windows 10 users are encouraged to use WSL with one of the supported Linux distributions, while guide to compile on Windows has been added.

  • MacOS should be possible through homebrew, and compiling instruction has been provided.

Conda package and Linux native package for Ubuntu LTS may be available in the future, see packaging.md

Installation guide

Download binary package

Ubuntu deb package and fedora 30+ rpm package, conda packages for windows, it should be available to download on github Release for this public github. The unstable package build from the latest code on the main branch can be downloaded here https://github.com/ukaea/parallel-preprocessor/releases/tag/dev

Note: choose the correct operation system, and the package is targeting at system-wide python3

The package file has the name pattern: parallel-preprocessor-<this_software_version>-dev_<OS name>-<OS version>.<package_suffix> If your OS is not supported, you need to compile it by yourself, there is documentation for installation dependency and build for all major platforms.

Download parallel-preprocessor for ubuntu version 18.04Download parallel-preprocessor for ubuntu version 20.04

Compile from source

wiki/BuildOnLinux.md: Guide to install dependencies and compile on Linux (Centos, Fedora, Ubuntu), build instructions.

wiki/BuildOnWindows.md: Guide to install dependencies via conda, and compile from source on Windows.

wiki/BuildOnMacOS.md: Guide to install dependencies via Homebrew, and compile from source on MacOS.

wiki/CondaBuildGuide.md: Guide and notes to build binary conda packages for windows and Linux.

Test the installation

wiki/Testing.md: unit test and integration tests written in Python. User can validate the software building and installation by run some of the test cases.

Get started (tutorial)

wiki/GetStarted.md: quick started guide to use geometry processing pipeline


Developer guide

Software Architecture

wiki/ArchitectureDesign.md: Software architecture design, component selection, parallel computation strategy

Code structure

CodeStructure.md: Module design and one-line description for each header files

Parallel computation design

wiki/ParallelDesign.md strategies for CPU, GPU and MPI parallel. In short, CPU-MPI is the focus of this framework, there are plenty framework for GPU acceleration.

Guide to module designer

wiki/DesignNewModule.md: describes how to design a new module or extend the existing module

Guide to packaging

wiki/Packaging.md deb/rpm package generation by CPack, distribution strategy.


Future plan

wiki/Roadmap.md: lists short-term and long-term plan, depends on funding status. Partially sponsoring this project is welcomed to enhance existing modules or develop new modules.


License consideration

License consideration: LGPL v2.1 instead of LGPL v3, because all relevant projects, OCCT, salome, FreeCAD, are using LGPL v2.1. LGPL v3 and LGPL v2.1 is not fully compatible to mixed up in source code level.

Contribution

Please submit issue and fix pull request from this repository.

Note: the main branch of this repo is main not master.

Acknowledgement

Funding source: STEP project in UKAEA http://www.ccfe.ac.uk/step.aspx

About

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

.github/workflows/github-ci.yml

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

by Qingfeng Xia
Research Software Engineering Group of UKAEA
License: LGPL v2.1
Copyright UKAEA, 2019~2020

Dr Andrew Davis of UKAEA, has contributed his technical insight, test geometries and other support to this software project. Also thank to my colleagues Dr John Nonweiler, Dr Jonathon Shimwell, etc. for testing and reviewing this software.

doxygen generated API documentation with wiki pages

Overview

Although this software aims to be a framework for more CAE/CAE preprocessing operatons, currently, this software provides only multi-threading geometry imprint and collision check, via command line user interface. This software has demonstrated faster and more controllable geometry imprinting on large geometry assemblies (10k+ parts) that is not possible on most existing CAD tools.

Technical backgroud will be added later

Disclaimer

This is NOT a production quality software, but a prototype to demonstrate the potential of accelereating CAE preprocessing by massive-parallel on HPC. We would like to apply more good practice in research software engineering, once resource is available.

According to the open source license, there is no warranty for this free library

Platforms supported

This project has been designed to be cross-platform, but only Linux is supported as the baseline platform.

  • Ubuntu as the primary/baseline development platform, with deb binary package generated

  • Fedora, Centos can compile ppp from source, with OpenCascade 7.x source code or copr package.

  • Centos8 should work without much effort; Centos7 software stack is outdated, using docker/singularity instead.

  • Windows 10 users are encouraged to use WSL with one of the supported Linux distributions, while guide to compile on Windows has been added.

  • MacOS should be possible through homebrew, and compiling instruction has been provided.

Conda package and Linux native package for Ubuntu LTS may be available in the future, see packaging.md

Installation guide

Download binary package

Ubuntu deb package and fedora 30+ rpm package, conda packages for windows, it should be available to download on github Release for this public github. The unstable package build from the latest code on the main branch can be downloaded here https://github.com/ukaea/parallel-preprocessor/releases/tag/dev

Note: choose the correct operation system, and the package is targeting at system-wide python3

The package file has the name pattern: parallel-preprocessor-<this_software_version>-dev_<OS name>-<OS version>.<package_suffix> If your OS is not supported, you need to compile it by yourself, there is documentation for installation dependency and build for all major platforms.

Download parallel-preprocessor for ubuntu version 18.04Download parallel-preprocessor for ubuntu version 20.04

Compile from source

wiki/BuildOnLinux.md: Guide to install dependencies and compile on Linux (Centos, Fedora, Ubuntu), build instructions.

wiki/BuildOnWindows.md: Guide to install dependencies via conda, and compile from source on Windows.

wiki/BuildOnMacOS.md: Guide to install dependencies via Homebrew, and compile from source on MacOS.

wiki/CondaBuildGuide.md: Guide and notes to build binary conda packages for windows and Linux.

Test the installation

wiki/Testing.md: unit test and integration tests written in Python. User can validate the software building and installation by run some of the test cases.

Get started (tutorial)

wiki/GetStarted.md: quick started guide to use geometry processing pipeline


Developer guide

Software Architecture

wiki/ArchitectureDesign.md: Software architecture design, component selection, parallel computation strategy

Code structure

CodeStructure.md: Module design and one-line description for each header files

Parallel computation design

wiki/ParallelDesign.md strategies for CPU, GPU and MPI parallel. In short, CPU-MPI is the focus of this framework, there are plenty framework for GPU acceleration.

Guide to module designer

wiki/DesignNewModule.md: describes how to design a new module or extend the existing module

Guide to packaging

wiki/Packaging.md deb/rpm package generation by CPack, distribution strategy.


Future plan

wiki/Roadmap.md: lists short-term and long-term plan, depends on funding status. Partially sponsoring this project is welcomed to enhance existing modules or develop new modules.


License consideration

License consideration: LGPL v2.1 instead of LGPL v3, because all relevant projects, OCCT, salome, FreeCAD, are using LGPL v2.1. LGPL v3 and LGPL v2.1 is not fully compatible to mixed up in source code level.

Contribution

Please submit issue and fix pull request from this repository.

Note: the main branch of this repo is main not master.

Acknowledgement

Funding source: STEP project in UKAEA http://www.ccfe.ac.uk/step.aspx

About

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

.github/workflows/github-ci.yml

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

by Qingfeng Xia
Research Software Engineering Group of UKAEA
License: LGPL v2.1
Copyright UKAEA, 2019~2020

Dr Andrew Davis of UKAEA, has contributed his technical insight, test geometries and other support to this software project. Also thank to my colleagues Dr John Nonweiler, Dr Jonathon Shimwell, etc. for testing and reviewing this software.

doxygen generated API documentation with wiki pages

Overview

Although this software aims to be a framework for more CAE/CAE preprocessing operatons, currently, this software provides only multi-threading geometry imprint and collision check, via command line user interface. This software has demonstrated faster and more controllable geometry imprinting on large geometry assemblies (10k+ parts) that is not possible on most existing CAD tools.

Technical backgroud will be added later

Disclaimer

This is NOT a production quality software, but a prototype to demonstrate the potential of accelereating CAE preprocessing by massive-parallel on HPC. We would like to apply more good practice in research software engineering, once resource is available.

According to the open source license, there is no warranty for this free library

Platforms supported

This project has been designed to be cross-platform, but only Linux is supported as the baseline platform.

  • Ubuntu as the primary/baseline development platform, with deb binary package generated

  • Fedora, Centos can compile ppp from source, with OpenCascade 7.x source code or copr package.

  • Centos8 should work without much effort; Centos7 software stack is outdated, using docker/singularity instead.

  • Windows 10 users are encouraged to use WSL with one of the supported Linux distributions, while guide to compile on Windows has been added.

  • MacOS should be possible through homebrew, and compiling instruction has been provided.

Conda package and Linux native package for Ubuntu LTS may be available in the future, see packaging.md

Installation guide

Download binary package

Ubuntu deb package and fedora 30+ rpm package, conda packages for windows, it should be available to download on github Release for this public github. The unstable package build from the latest code on the main branch can be downloaded here https://github.com/ukaea/parallel-preprocessor/releases/tag/dev

Note: choose the correct operation system, and the package is targeting at system-wide python3

The package file has the name pattern: parallel-preprocessor-<this_software_version>-dev_<OS name>-<OS version>.<package_suffix> If your OS is not supported, you need to compile it by yourself, there is documentation for installation dependency and build for all major platforms.

Download parallel-preprocessor for ubuntu version 18.04Download parallel-preprocessor for ubuntu version 20.04

Compile from source

wiki/BuildOnLinux.md: Guide to install dependencies and compile on Linux (Centos, Fedora, Ubuntu), build instructions.

wiki/BuildOnWindows.md: Guide to install dependencies via conda, and compile from source on Windows.

wiki/BuildOnMacOS.md: Guide to install dependencies via Homebrew, and compile from source on MacOS.

wiki/CondaBuildGuide.md: Guide and notes to build binary conda packages for windows and Linux.

Test the installation

wiki/Testing.md: unit test and integration tests written in Python. User can validate the software building and installation by run some of the test cases.

Get started (tutorial)

wiki/GetStarted.md: quick started guide to use geometry processing pipeline


Developer guide

Software Architecture

wiki/ArchitectureDesign.md: Software architecture design, component selection, parallel computation strategy

Code structure

CodeStructure.md: Module design and one-line description for each header files

Parallel computation design

wiki/ParallelDesign.md strategies for CPU, GPU and MPI parallel. In short, CPU-MPI is the focus of this framework, there are plenty framework for GPU acceleration.

Guide to module designer

wiki/DesignNewModule.md: describes how to design a new module or extend the existing module

Guide to packaging

wiki/Packaging.md deb/rpm package generation by CPack, distribution strategy.


Future plan

wiki/Roadmap.md: lists short-term and long-term plan, depends on funding status. Partially sponsoring this project is welcomed to enhance existing modules or develop new modules.


License consideration

License consideration: LGPL v2.1 instead of LGPL v3, because all relevant projects, OCCT, salome, FreeCAD, are using LGPL v2.1. LGPL v3 and LGPL v2.1 is not fully compatible to mixed up in source code level.

Contribution

Please submit issue and fix pull request from this repository.

Note: the main branch of this repo is main not master.

Acknowledgement

Funding source: STEP project in UKAEA http://www.ccfe.ac.uk/step.aspx

About

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

.github/workflows/github-ci.yml

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

by Qingfeng Xia
Research Software Engineering Group of UKAEA
License: LGPL v2.1
Copyright UKAEA, 2019~2020

Dr Andrew Davis of UKAEA, has contributed his technical insight, test geometries and other support to this software project. Also thank to my colleagues Dr John Nonweiler, Dr Jonathon Shimwell, etc. for testing and reviewing this software.

doxygen generated API documentation with wiki pages

Overview

Although this software aims to be a framework for more CAE/CAE preprocessing operatons, currently, this software provides only multi-threading geometry imprint and collision check, via command line user interface. This software has demonstrated faster and more controllable geometry imprinting on large geometry assemblies (10k+ parts) that is not possible on most existing CAD tools.

Technical backgroud will be added later

Disclaimer

This is NOT a production quality software, but a prototype to demonstrate the potential of accelereating CAE preprocessing by massive-parallel on HPC. We would like to apply more good practice in research software engineering, once resource is available.

According to the open source license, there is no warranty for this free library

Platforms supported

This project has been designed to be cross-platform, but only Linux is supported as the baseline platform.

  • Ubuntu as the primary/baseline development platform, with deb binary package generated

  • Fedora, Centos can compile ppp from source, with OpenCascade 7.x source code or copr package.

  • Centos8 should work without much effort; Centos7 software stack is outdated, using docker/singularity instead.

  • Windows 10 users are encouraged to use WSL with one of the supported Linux distributions, while guide to compile on Windows has been added.

  • MacOS should be possible through homebrew, and compiling instruction has been provided.

Conda package and Linux native package for Ubuntu LTS may be available in the future, see packaging.md

Installation guide

Download binary package

Ubuntu deb package and fedora 30+ rpm package, conda packages for windows, it should be available to download on github Release for this public github. The unstable package build from the latest code on the main branch can be downloaded here https://github.com/ukaea/parallel-preprocessor/releases/tag/dev

Note: choose the correct operation system, and the package is targeting at system-wide python3

The package file has the name pattern: parallel-preprocessor-<this_software_version>-dev_<OS name>-<OS version>.<package_suffix> If your OS is not supported, you need to compile it by yourself, there is documentation for installation dependency and build for all major platforms.

Download parallel-preprocessor for ubuntu version 18.04Download parallel-preprocessor for ubuntu version 20.04

Compile from source

wiki/BuildOnLinux.md: Guide to install dependencies and compile on Linux (Centos, Fedora, Ubuntu), build instructions.

wiki/BuildOnWindows.md: Guide to install dependencies via conda, and compile from source on Windows.

wiki/BuildOnMacOS.md: Guide to install dependencies via Homebrew, and compile from source on MacOS.

wiki/CondaBuildGuide.md: Guide and notes to build binary conda packages for windows and Linux.

Test the installation

wiki/Testing.md: unit test and integration tests written in Python. User can validate the software building and installation by run some of the test cases.

Get started (tutorial)

wiki/GetStarted.md: quick started guide to use geometry processing pipeline


Developer guide

Software Architecture

wiki/ArchitectureDesign.md: Software architecture design, component selection, parallel computation strategy

Code structure

CodeStructure.md: Module design and one-line description for each header files

Parallel computation design

wiki/ParallelDesign.md strategies for CPU, GPU and MPI parallel. In short, CPU-MPI is the focus of this framework, there are plenty framework for GPU acceleration.

Guide to module designer

wiki/DesignNewModule.md: describes how to design a new module or extend the existing module

Guide to packaging

wiki/Packaging.md deb/rpm package generation by CPack, distribution strategy.


Future plan

wiki/Roadmap.md: lists short-term and long-term plan, depends on funding status. Partially sponsoring this project is welcomed to enhance existing modules or develop new modules.


License consideration

License consideration: LGPL v2.1 instead of LGPL v3, because all relevant projects, OCCT, salome, FreeCAD, are using LGPL v2.1. LGPL v3 and LGPL v2.1 is not fully compatible to mixed up in source code level.

Contribution

Please submit issue and fix pull request from this repository.

Note: the main branch of this repo is main not master.

Acknowledgement

Funding source: STEP project in UKAEA http://www.ccfe.ac.uk/step.aspx

About

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

.github/workflows/github-ci.yml

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

by Qingfeng Xia
Research Software Engineering Group of UKAEA
License: LGPL v2.1
Copyright UKAEA, 2019~2020

Dr Andrew Davis of UKAEA, has contributed his technical insight, test geometries and other support to this software project. Also thank to my colleagues Dr John Nonweiler, Dr Jonathon Shimwell, etc. for testing and reviewing this software.

doxygen generated API documentation with wiki pages

Overview

Although this software aims to be a framework for more CAE/CAE preprocessing operatons, currently, this software provides only multi-threading geometry imprint and collision check, via command line user interface. This software has demonstrated faster and more controllable geometry imprinting on large geometry assemblies (10k+ parts) that is not possible on most existing CAD tools.

Technical backgroud will be added later

Disclaimer

This is NOT a production quality software, but a prototype to demonstrate the potential of accelereating CAE preprocessing by massive-parallel on HPC. We would like to apply more good practice in research software engineering, once resource is available.

According to the open source license, there is no warranty for this free library

Platforms supported

This project has been designed to be cross-platform, but only Linux is supported as the baseline platform.

  • Ubuntu as the primary/baseline development platform, with deb binary package generated

  • Fedora, Centos can compile ppp from source, with OpenCascade 7.x source code or copr package.

  • Centos8 should work without much effort; Centos7 software stack is outdated, using docker/singularity instead.

  • Windows 10 users are encouraged to use WSL with one of the supported Linux distributions, while guide to compile on Windows has been added.

  • MacOS should be possible through homebrew, and compiling instruction has been provided.

Conda package and Linux native package for Ubuntu LTS may be available in the future, see packaging.md

Installation guide

Download binary package

Ubuntu deb package and fedora 30+ rpm package, conda packages for windows, it should be available to download on github Release for this public github. The unstable package build from the latest code on the main branch can be downloaded here https://github.com/ukaea/parallel-preprocessor/releases/tag/dev

Note: choose the correct operation system, and the package is targeting at system-wide python3

The package file has the name pattern: parallel-preprocessor-<this_software_version>-dev_<OS name>-<OS version>.<package_suffix> If your OS is not supported, you need to compile it by yourself, there is documentation for installation dependency and build for all major platforms.

Download parallel-preprocessor for ubuntu version 18.04Download parallel-preprocessor for ubuntu version 20.04

Compile from source

wiki/BuildOnLinux.md: Guide to install dependencies and compile on Linux (Centos, Fedora, Ubuntu), build instructions.

wiki/BuildOnWindows.md: Guide to install dependencies via conda, and compile from source on Windows.

wiki/BuildOnMacOS.md: Guide to install dependencies via Homebrew, and compile from source on MacOS.

wiki/CondaBuildGuide.md: Guide and notes to build binary conda packages for windows and Linux.

Test the installation

wiki/Testing.md: unit test and integration tests written in Python. User can validate the software building and installation by run some of the test cases.

Get started (tutorial)

wiki/GetStarted.md: quick started guide to use geometry processing pipeline


Developer guide

Software Architecture

wiki/ArchitectureDesign.md: Software architecture design, component selection, parallel computation strategy

Code structure

CodeStructure.md: Module design and one-line description for each header files

Parallel computation design

wiki/ParallelDesign.md strategies for CPU, GPU and MPI parallel. In short, CPU-MPI is the focus of this framework, there are plenty framework for GPU acceleration.

Guide to module designer

wiki/DesignNewModule.md: describes how to design a new module or extend the existing module

Guide to packaging

wiki/Packaging.md deb/rpm package generation by CPack, distribution strategy.


Future plan

wiki/Roadmap.md: lists short-term and long-term plan, depends on funding status. Partially sponsoring this project is welcomed to enhance existing modules or develop new modules.


License consideration

License consideration: LGPL v2.1 instead of LGPL v3, because all relevant projects, OCCT, salome, FreeCAD, are using LGPL v2.1. LGPL v3 and LGPL v2.1 is not fully compatible to mixed up in source code level.

Contribution

Please submit issue and fix pull request from this repository.

Note: the main branch of this repo is main not master.

Acknowledgement

Funding source: STEP project in UKAEA http://www.ccfe.ac.uk/step.aspx

About

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

.github/workflows/github-ci.yml

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

by Qingfeng Xia
Research Software Engineering Group of UKAEA
License: LGPL v2.1
Copyright UKAEA, 2019~2020

Dr Andrew Davis of UKAEA, has contributed his technical insight, test geometries and other support to this software project. Also thank to my colleagues Dr John Nonweiler, Dr Jonathon Shimwell, etc. for testing and reviewing this software.

doxygen generated API documentation with wiki pages

Overview

Although this software aims to be a framework for more CAE/CAE preprocessing operatons, currently, this software provides only multi-threading geometry imprint and collision check, via command line user interface. This software has demonstrated faster and more controllable geometry imprinting on large geometry assemblies (10k+ parts) that is not possible on most existing CAD tools.

Technical backgroud will be added later

Disclaimer

This is NOT a production quality software, but a prototype to demonstrate the potential of accelereating CAE preprocessing by massive-parallel on HPC. We would like to apply more good practice in research software engineering, once resource is available.

According to the open source license, there is no warranty for this free library

Platforms supported

This project has been designed to be cross-platform, but only Linux is supported as the baseline platform.

  • Ubuntu as the primary/baseline development platform, with deb binary package generated

  • Fedora, Centos can compile ppp from source, with OpenCascade 7.x source code or copr package.

  • Centos8 should work without much effort; Centos7 software stack is outdated, using docker/singularity instead.

  • Windows 10 users are encouraged to use WSL with one of the supported Linux distributions, while guide to compile on Windows has been added.

  • MacOS should be possible through homebrew, and compiling instruction has been provided.

Conda package and Linux native package for Ubuntu LTS may be available in the future, see packaging.md

Installation guide

Download binary package

Ubuntu deb package and fedora 30+ rpm package, conda packages for windows, it should be available to download on github Release for this public github. The unstable package build from the latest code on the main branch can be downloaded here https://github.com/ukaea/parallel-preprocessor/releases/tag/dev

Note: choose the correct operation system, and the package is targeting at system-wide python3

The package file has the name pattern: parallel-preprocessor-<this_software_version>-dev_<OS name>-<OS version>.<package_suffix> If your OS is not supported, you need to compile it by yourself, there is documentation for installation dependency and build for all major platforms.

Download parallel-preprocessor for ubuntu version 18.04Download parallel-preprocessor for ubuntu version 20.04

Compile from source

wiki/BuildOnLinux.md: Guide to install dependencies and compile on Linux (Centos, Fedora, Ubuntu), build instructions.

wiki/BuildOnWindows.md: Guide to install dependencies via conda, and compile from source on Windows.

wiki/BuildOnMacOS.md: Guide to install dependencies via Homebrew, and compile from source on MacOS.

wiki/CondaBuildGuide.md: Guide and notes to build binary conda packages for windows and Linux.

Test the installation

wiki/Testing.md: unit test and integration tests written in Python. User can validate the software building and installation by run some of the test cases.

Get started (tutorial)

wiki/GetStarted.md: quick started guide to use geometry processing pipeline


Developer guide

Software Architecture

wiki/ArchitectureDesign.md: Software architecture design, component selection, parallel computation strategy

Code structure

CodeStructure.md: Module design and one-line description for each header files

Parallel computation design

wiki/ParallelDesign.md strategies for CPU, GPU and MPI parallel. In short, CPU-MPI is the focus of this framework, there are plenty framework for GPU acceleration.

Guide to module designer

wiki/DesignNewModule.md: describes how to design a new module or extend the existing module

Guide to packaging

wiki/Packaging.md deb/rpm package generation by CPack, distribution strategy.


Future plan

wiki/Roadmap.md: lists short-term and long-term plan, depends on funding status. Partially sponsoring this project is welcomed to enhance existing modules or develop new modules.


License consideration

License consideration: LGPL v2.1 instead of LGPL v3, because all relevant projects, OCCT, salome, FreeCAD, are using LGPL v2.1. LGPL v3 and LGPL v2.1 is not fully compatible to mixed up in source code level.

Contribution

Please submit issue and fix pull request from this repository.

Note: the main branch of this repo is main not master.

Acknowledgement

Funding source: STEP project in UKAEA http://www.ccfe.ac.uk/step.aspx

About

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

.github/workflows/github-ci.yml

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

by Qingfeng Xia
Research Software Engineering Group of UKAEA
License: LGPL v2.1
Copyright UKAEA, 2019~2020

Dr Andrew Davis of UKAEA, has contributed his technical insight, test geometries and other support to this software project. Also thank to my colleagues Dr John Nonweiler, Dr Jonathon Shimwell, etc. for testing and reviewing this software.

doxygen generated API documentation with wiki pages

Overview

Although this software aims to be a framework for more CAE/CAE preprocessing operatons, currently, this software provides only multi-threading geometry imprint and collision check, via command line user interface. This software has demonstrated faster and more controllable geometry imprinting on large geometry assemblies (10k+ parts) that is not possible on most existing CAD tools.

Technical backgroud will be added later

Disclaimer

This is NOT a production quality software, but a prototype to demonstrate the potential of accelereating CAE preprocessing by massive-parallel on HPC. We would like to apply more good practice in research software engineering, once resource is available.

According to the open source license, there is no warranty for this free library

Platforms supported

This project has been designed to be cross-platform, but only Linux is supported as the baseline platform.

  • Ubuntu as the primary/baseline development platform, with deb binary package generated

  • Fedora, Centos can compile ppp from source, with OpenCascade 7.x source code or copr package.

  • Centos8 should work without much effort; Centos7 software stack is outdated, using docker/singularity instead.

  • Windows 10 users are encouraged to use WSL with one of the supported Linux distributions, while guide to compile on Windows has been added.

  • MacOS should be possible through homebrew, and compiling instruction has been provided.

Conda package and Linux native package for Ubuntu LTS may be available in the future, see packaging.md

Installation guide

Download binary package

Ubuntu deb package and fedora 30+ rpm package, conda packages for windows, it should be available to download on github Release for this public github. The unstable package build from the latest code on the main branch can be downloaded here https://github.com/ukaea/parallel-preprocessor/releases/tag/dev

Note: choose the correct operation system, and the package is targeting at system-wide python3

The package file has the name pattern: parallel-preprocessor-<this_software_version>-dev_<OS name>-<OS version>.<package_suffix> If your OS is not supported, you need to compile it by yourself, there is documentation for installation dependency and build for all major platforms.

Download parallel-preprocessor for ubuntu version 18.04Download parallel-preprocessor for ubuntu version 20.04

Compile from source

wiki/BuildOnLinux.md: Guide to install dependencies and compile on Linux (Centos, Fedora, Ubuntu), build instructions.

wiki/BuildOnWindows.md: Guide to install dependencies via conda, and compile from source on Windows.

wiki/BuildOnMacOS.md: Guide to install dependencies via Homebrew, and compile from source on MacOS.

wiki/CondaBuildGuide.md: Guide and notes to build binary conda packages for windows and Linux.

Test the installation

wiki/Testing.md: unit test and integration tests written in Python. User can validate the software building and installation by run some of the test cases.

Get started (tutorial)

wiki/GetStarted.md: quick started guide to use geometry processing pipeline


Developer guide

Software Architecture

wiki/ArchitectureDesign.md: Software architecture design, component selection, parallel computation strategy

Code structure

CodeStructure.md: Module design and one-line description for each header files

Parallel computation design

wiki/ParallelDesign.md strategies for CPU, GPU and MPI parallel. In short, CPU-MPI is the focus of this framework, there are plenty framework for GPU acceleration.

Guide to module designer

wiki/DesignNewModule.md: describes how to design a new module or extend the existing module

Guide to packaging

wiki/Packaging.md deb/rpm package generation by CPack, distribution strategy.


Future plan

wiki/Roadmap.md: lists short-term and long-term plan, depends on funding status. Partially sponsoring this project is welcomed to enhance existing modules or develop new modules.


License consideration

License consideration: LGPL v2.1 instead of LGPL v3, because all relevant projects, OCCT, salome, FreeCAD, are using LGPL v2.1. LGPL v3 and LGPL v2.1 is not fully compatible to mixed up in source code level.

Contribution

Please submit issue and fix pull request from this repository.

Note: the main branch of this repo is main not master.

Acknowledgement

Funding source: STEP project in UKAEA http://www.ccfe.ac.uk/step.aspx

About

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

.github/workflows/github-ci.yml

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

by Qingfeng Xia
Research Software Engineering Group of UKAEA
License: LGPL v2.1
Copyright UKAEA, 2019~2020

Dr Andrew Davis of UKAEA, has contributed his technical insight, test geometries and other support to this software project. Also thank to my colleagues Dr John Nonweiler, Dr Jonathon Shimwell, etc. for testing and reviewing this software.

doxygen generated API documentation with wiki pages

Overview

Although this software aims to be a framework for more CAE/CAE preprocessing operatons, currently, this software provides only multi-threading geometry imprint and collision check, via command line user interface. This software has demonstrated faster and more controllable geometry imprinting on large geometry assemblies (10k+ parts) that is not possible on most existing CAD tools.

Technical backgroud will be added later

Disclaimer

This is NOT a production quality software, but a prototype to demonstrate the potential of accelereating CAE preprocessing by massive-parallel on HPC. We would like to apply more good practice in research software engineering, once resource is available.

According to the open source license, there is no warranty for this free library

Platforms supported

This project has been designed to be cross-platform, but only Linux is supported as the baseline platform.

  • Ubuntu as the primary/baseline development platform, with deb binary package generated

  • Fedora, Centos can compile ppp from source, with OpenCascade 7.x source code or copr package.

  • Centos8 should work without much effort; Centos7 software stack is outdated, using docker/singularity instead.

  • Windows 10 users are encouraged to use WSL with one of the supported Linux distributions, while guide to compile on Windows has been added.

  • MacOS should be possible through homebrew, and compiling instruction has been provided.

Conda package and Linux native package for Ubuntu LTS may be available in the future, see packaging.md

Installation guide

Download binary package

Ubuntu deb package and fedora 30+ rpm package, conda packages for windows, it should be available to download on github Release for this public github. The unstable package build from the latest code on the main branch can be downloaded here https://github.com/ukaea/parallel-preprocessor/releases/tag/dev

Note: choose the correct operation system, and the package is targeting at system-wide python3

The package file has the name pattern: parallel-preprocessor-<this_software_version>-dev_<OS name>-<OS version>.<package_suffix> If your OS is not supported, you need to compile it by yourself, there is documentation for installation dependency and build for all major platforms.

Download parallel-preprocessor for ubuntu version 18.04Download parallel-preprocessor for ubuntu version 20.04

Compile from source

wiki/BuildOnLinux.md: Guide to install dependencies and compile on Linux (Centos, Fedora, Ubuntu), build instructions.

wiki/BuildOnWindows.md: Guide to install dependencies via conda, and compile from source on Windows.

wiki/BuildOnMacOS.md: Guide to install dependencies via Homebrew, and compile from source on MacOS.

wiki/CondaBuildGuide.md: Guide and notes to build binary conda packages for windows and Linux.

Test the installation

wiki/Testing.md: unit test and integration tests written in Python. User can validate the software building and installation by run some of the test cases.

Get started (tutorial)

wiki/GetStarted.md: quick started guide to use geometry processing pipeline


Developer guide

Software Architecture

wiki/ArchitectureDesign.md: Software architecture design, component selection, parallel computation strategy

Code structure

CodeStructure.md: Module design and one-line description for each header files

Parallel computation design

wiki/ParallelDesign.md strategies for CPU, GPU and MPI parallel. In short, CPU-MPI is the focus of this framework, there are plenty framework for GPU acceleration.

Guide to module designer

wiki/DesignNewModule.md: describes how to design a new module or extend the existing module

Guide to packaging

wiki/Packaging.md deb/rpm package generation by CPack, distribution strategy.


Future plan

wiki/Roadmap.md: lists short-term and long-term plan, depends on funding status. Partially sponsoring this project is welcomed to enhance existing modules or develop new modules.


License consideration

License consideration: LGPL v2.1 instead of LGPL v3, because all relevant projects, OCCT, salome, FreeCAD, are using LGPL v2.1. LGPL v3 and LGPL v2.1 is not fully compatible to mixed up in source code level.

Contribution

Please submit issue and fix pull request from this repository.

Note: the main branch of this repo is main not master.

Acknowledgement

Funding source: STEP project in UKAEA http://www.ccfe.ac.uk/step.aspx

About

Parallel-preprocessor: a prototype of parallel CAE geometry preprocessing framework

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages