diff --git a/.github/workflows/latex.yml b/.github/workflows/latex.yml index 8a6cdb26..3705d73e 100644 --- a/.github/workflows/latex.yml +++ b/.github/workflows/latex.yml @@ -22,7 +22,7 @@ jobs: id: texlive_runner run: | if ! [ -z "$GH_TOKEN" ]; then - runners=$(gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /orgs/feelpp/actions/runners) + runners=$(gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /orgs/${{ github.repository_owner }}/actions/runners) texlive=$(echo $runners | jq --arg label "self-texlive" '[.runners[] | any(.labels[]; .name == $label) and .status == "online"] | any') if [ "$texlive" = "false" ]; then echo "runner=ubuntu-latest" >> "$GITHUB_OUTPUT" @@ -60,16 +60,35 @@ jobs: name: Build LaTeX Artifact env: VERSION: ${{ github.ref_name }} + ZOTERO_API_KEY: ${{ secrets.ZOTERO_API_KEY }} steps: - name: Set up Git repository uses: actions/checkout@v4 with: clean: true - - name: Install hooks + - name: Install hooks run: | bash ./a.cli setup + - name: Update BibTeX references + if: ${{ github.ref != 'refs/heads/main' }} + run: | + bash ./a.cli update-bibtex + + - name: Commit new references.bib + if: ${{ github.ref != 'refs/heads/main' }} + run: | + git config --local user.email "${{ github.actor }}@users.noreply.github.com" + git config --local user.name "${{ github.actor }}" + git add references.bib + if ! git diff --cached --quiet; then + git commit -m "Update references.bib from Zotero" + git push + else + echo "No changes in references.bib to commit." + fi + - name: Compile LaTeX document uses: xu-cheng/latex-action@v3 if: ${{ needs.workflow-setup.outputs.runner == 'ubuntu-latest' }} @@ -97,10 +116,18 @@ jobs: ./*.bbl ./${{ needs.workflow-setup.outputs.pdf }} ./README.adoc + ./hooks* ./img* ./dat* ./*.png ./a.cli + ./*.sty + ./chapters* + ./software* + ./exclude.txt + ./sections* + ./litterature* + ./graphics* !./.git* !./.github* !./.vscode* @@ -152,13 +179,12 @@ jobs: - name: Archive Article run: | temp_dir=$(mktemp -d) - # tar -czvf "${temp_dir}/${{ needs.workflow-setup.outputs.prefixwithref }}.tar.gz" -C artifact ./ - # mv "${temp_dir}/${{ needs.workflow-setup.outputs.prefixwithref }}.tar.gz" ./ cd artifact zip -r "${temp_dir}/${{ needs.workflow-setup.outputs.prefixwithref }}.zip" ./ cd .. mv "${temp_dir}/${{ needs.workflow-setup.outputs.prefixwithref }}.zip" ./ rm -rf "$temp_dir" + rm -rf "$temp_dir" - name: Create Release id: create_release diff --git a/CITATION.cff b/CITATION.cff index af90393d..d505d377 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -4,10 +4,13 @@ authors: - family-names: "Prud'homme" given-names: "Christophe" orcid: https://orcid.org/0000-0003-2287-2961 + - family-names: "Saigre" + given-names: "Thomas" + orcid: https://orcid.org/0009-0009-5763-4956 title: "Template article repository" -version: 1.7.0 +version: 1.8.0 identifiers: - type: doi value: 10.5281/zenodo.12760235 -date-released: 2024-08-17 +date-released: 2024-10-24 url: "https://github.com/feelpp/article.template" diff --git a/a.cli b/a.cli index a5459b51..8216560c 100755 --- a/a.cli +++ b/a.cli @@ -3,23 +3,63 @@ # Exit immediately if a command exits with a non-zero status set -e -# setup hooks -setup() { +# Default values +DEFAULT_ZOTERO_USER_ID="" +DEFAULT_ZOTERO_API_KEY="" +DEFAULT_ZOTERO_GROUP_ID="4678293" +DEFAULT_BIBTEX_FILE="references.bib" +COLLECTION_ID="" -for i in commit checkout merge; do - cp hooks/post-commit .git/hooks/post-$i - chmod +x .git/hooks/post-$i -done -echo "Hooks setup successfully." +# Read environment variables or set defaults +ZOTERO_USER_ID=${ZOTERO_USER_ID:-$DEFAULT_ZOTERO_USER_ID} +ZOTERO_API_KEY=${ZOTERO_API_KEY:-$DEFAULT_ZOTERO_API_KEY} +ZOTERO_GROUP_ID=${ZOTERO_GROUP_ID:-$DEFAULT_ZOTERO_GROUP_ID} +BIBTEX_FILE=${BIBTEX_FILE:-$DEFAULT_BIBTEX_FILE} -git checkout +# Function to parse command-line arguments +parse_args() { + while [[ "$#" -gt 0 ]]; do + case $1 in + --zotero-user-id) ZOTERO_USER_ID="$2"; shift ;; + --zotero-api-key) ZOTERO_API_KEY="$2"; shift ;; + --zotero-group-id) ZOTERO_GROUP_ID="$2"; shift ;; + --bibtex-file) BIBTEX_FILE="$2"; shift ;; + --help) + echo "Usage: $0 [options] {setup|create|list|delete|update-bibtex} [version]" + echo "Options:" + echo " --zotero-user-id Zotero User ID" + echo " --zotero-api-key Zotero API Key" + echo " --zotero-group-id Zotero Group ID (optional, omit if using user library)" + echo " --bibtex-file Path to the BibTeX file (default: your_bibtex_file.bib)" + echo "Commands:" + echo " setup : Setup hooks for commit, checkout, and merge" + echo " create : Create a new release with the provided version" + echo " list : List all existing releases" + echo " delete : Delete the release with the provided version" + echo " update-bibtex : Fetch and update the BibTeX file from Zotero" + echo " version : Optional argument specifying the version for create and delete commands" + exit 0 ;; + esac + shift + done +} -if ! test -f .git/gitHeadInfo.gin; then - cp .git/gitHeadInfo.gin gitHeadLocal.gin +# Function to setup hooks +setup() { + for i in commit checkout merge; do + cp hooks/post-commit .git/hooks/post-$i + chmod +x .git/hooks/post-$i + done + echo "Hooks setup successfully." - git add gitHeadLocal.gin - git commit -m "Created gitHeadLocal.gin for initial setup" -fi + git checkout + + if ! test -f .git/gitHeadInfo.gin; then + cp .git/gitHeadInfo.gin gitHeadLocal.gin + + git add gitHeadLocal.gin + git commit -m "Created gitHeadLocal.gin for initial setup" + fi } # Function to create a release @@ -31,26 +71,25 @@ create_release() { exit 1 fi - # check if the tag already exists + # Check if the tag already exists if git rev-parse "$VERSION" >/dev/null 2>&1; then echo "Error: Tag $VERSION already exists." exit 1 fi - # check the format of the version number + # Check the format of the version number if [[ ! "$VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-z]+\.[0-9]+)?$ ]]; then echo "Error: Version number should be in the format vx.y.z or vx.y.z-pre.a." exit 1 fi - # Tag the repository with the provided version git tag -a "$VERSION" -m "Release $VERSION" # Checkout the tag to trigger post-commit hook to update gitinfo2 info file git checkout - # show the reltag line of .git/gitHeadInfo.gin + # Show the reltag line of .git/gitHeadInfo.gin grep reltag .git/gitHeadInfo.gin cp .git/gitHeadInfo.gin gitHeadLocal.gin @@ -60,7 +99,7 @@ create_release() { git tag -f -a "$VERSION" -m "Release $VERSION" # Push the changes and the tags - git push origin main --follow-tags + git push origin --follow-tags echo "Release $VERSION created and pushed successfully." } @@ -70,6 +109,11 @@ list_releases() { git tag --sort=-creatordate | head -n $1 } +# Function to clean latex build files +clean() { + # clean latex build files + rm -f *.aux *.bbl *.blg *.log *.out *.pyg *.fls *.synctex* *.toc *.fdb_latexmk *.fls *.idx *.ilg *.ind *.chl *.lof *.lot *.pdf +} # Function to delete a release delete_release() { VERSION=$1 @@ -83,16 +127,134 @@ delete_release() { git tag -d "$VERSION" # Delete the tag remotely - #git push origin --delete "$VERSION" + # git push origin --delete "$VERSION" echo "Release $VERSION deleted successfully." } +# Function to fetch and update BibTeX file from Zotero +update_bibtex() { + if [ -z "$ZOTERO_GROUP_ID" ]; then + if [ -z "$ZOTERO_USER_ID" ]; then + echo "Zotero group ID and user ID are not set, one of them is required." + echo "If Group ID is set, User ID is not required." + exit 1 + fi + fi + + if [ -z "$ZOTERO_API_KEY" ]; then + echo "Zotero API key is not set." + exit 1 + fi + + echo "Fetching BibTeX entries from Zotero..." + + # Define the URL to fetch BibTeX + if [ -z "$ZOTERO_GROUP_ID" ]; then + URL="https://api.zotero.org/users/$ZOTERO_USER_ID/items?format=biblatex" + else + URL="https://api.zotero.org/groups/$ZOTERO_GROUP_ID/items?format=biblatex" + fi + start=0 + limit=100 + has_more=true + echo "" > "$BIBTEX_FILE" + while $has_more; do + response=$(curl -s -H "Zotero-API-Key: $ZOTERO_API_KEY" "$URL&start=$start&limit=$limit") + + if [ -z "$response" ]; then + echo "No more items to fetch." + has_more=false + break + fi + + echo "$response" >> "$BIBTEX_FILE" + + # Check if we need to fetch more items + num_items=$(echo "$response" | grep -c "@") # Counting the number of BibTeX entries + if [ "$num_items" -lt "$limit" ]; then + has_more=false + else + start=$((start + limit)) + fi + done + + echo "BibTeX entries updated successfully in $BIBTEX_FILE." +} + +update_bibtex2() { + if [ -z "$ZOTERO_GROUP_ID" ]; then + if [ -z "$ZOTERO_USER_ID" ]; then + echo "Zotero group ID and user ID are not set, one of them is required." + echo "If Group ID is set, User ID is not required." + exit 1 + fi + fi + + if [ -z "$ZOTERO_API_KEY" ]; then + echo "Zotero API key is not set." + exit 1 + fi + + echo "Fetching BibTeX entries from Zotero..." + + # Define the URL to fetch BibTeX + if [ -z "$ZOTERO_GROUP_ID" ]; then + URL="https://api.zotero.org/users/$ZOTERO_USER_ID/items?format=bibtex" + else + URL="https://api.zotero.org/groups/$ZOTERO_GROUP_ID/items?format=bibtex" + fi + + start=0 + limit=100 + has_more=true # Initialize the loop control variable + echo "" > "$BIBTEX_FILE" + + while $has_more; do + # Send the request + response=$(curl -s -w "%{http_code}" -H "Zotero-API-Key: $ZOTERO_API_KEY" "$URL&start=$start&limit=$limit") + + # Separate the response content and the status code + http_code=$(echo "$response" | tail -n1) + content=$(echo "$response" | sed '$d') # Everything except the last line (status code) + + # Check if the request was successful (status code 200) + if [ "$http_code" -ne 200 ]; then + echo "Error fetching data: HTTP status $http_code" + exit 1 + fi + if [ -z "$content" ]; then + echo "No more items to fetch." + has_more=false + break + fi + # Append the content to the BibTeX file + echo "$content" >> "$BIBTEX_FILE" + + # Check if there are more items by inspecting the Link header or counting the items + num_items=$(echo "$content" | grep -c "@") # Counting BibTeX entries + echo "downloaded $num_items items" + if [ "$num_items" = "0" ]; then + has_more=false + else + start=$((start + limit)) + fi + echo "start=$start, has_more=$has_more" + done + + echo "BibTeX entries updated successfully in $BIBTEX_FILE." +} + # Main script logic +parse_args "$@" + case "$1" in setup) setup ;; + clean) + clean + ;; create) create_release "$2" ;; @@ -102,13 +264,24 @@ case "$1" in delete) delete_release "$2" ;; + update-bibtex) + update_bibtex2 + ;; *) - echo "Usage: $0 {setup|create|list|delete} [version]" - echo " setup : Setup hooks for commit, checkout, and merge" - echo " create : Create a new release with the provided version" - echo " list : List all existing releases" - echo " delete : Delete the release with the provided version" - echo " version : Optional argument specifying the version for create and delete commands" + echo "Usage: $0 [options] {setup|create|list|delete|update-bibtex} [version]" + echo "Options:" + echo " --zotero-user-id Zotero User ID (optional, omit if using group id given)" + echo " --zotero-api-key Zotero API Key" + echo " --zotero-group-id Zotero Group ID (optional, omit if using user id given)" + echo " --bibtex-file Path to the BibTeX file (default: your_bibtex_file.bib)" + echo "Commands:" + echo " setup : Setup hooks for commit, checkout, and merge" + echo " clean : Clean latex build files" + echo " create : Create a new release with the provided version" + echo " list : List all existing releases" + echo " delete : Delete the release with the provided version" + echo " update-bibtex : Fetch and update the BibTeX file from Zotero" + echo " version : Optional argument specifying the version for create and delete commands" exit 1 ;; esac \ No newline at end of file diff --git a/article.template.tex b/article.template.tex index afe218c9..b81c90bb 100644 --- a/article.template.tex +++ b/article.template.tex @@ -3,6 +3,7 @@ \usepackage{graphicx} \usepackage{xcolor} + \IfFileExists{.git/gitHeadInfo.gin}{ \usepackage[pcount,grumpy,mark,markifdirty]{gitinfo2} }{% @@ -15,9 +16,9 @@ \usepackage{natbib} \usepackage{hyperref} - +\usepackage{cleveref} \title{Template Repository for Articles} -\author{Christophe Prud'homme\thanks{Cemosis, IRMA UMR 7501, Université de Strasbourg, CNRS, France, \tt \href{mailto:christophe.prudhomme@cemosis.fr}{christophe.prudhomme@cemosis.fr}}} +\author{Christophe Prud'homme, Thomas Saigre\thanks{Cemosis, IRMA UMR 7501, Université de Strasbourg, CNRS, France, \tt \href{mailto:christophe.prudhomme@cemosis.fr}{christophe.prudhomme@cemosis.fr}, \href{mailto:thomas.saigre@cemosis.fr}{thomas.saigre@cemosis.fr}}} \date{\gitReln\ \gitAuthorDate\ (\gitAbbrevHash)} % Define custom color @@ -114,8 +115,10 @@ \subsection{Using GitHub Actions} The GitHub Action workflow: \begin{itemize} - \item Compiles the \LaTeX{} document using \mintinline{bash}{xu-cheng/latex-action} on \texttt{ubuntu-latest} runner or \texttt{self-texlive} runner hosted on \texttt{feelpp} organisation. - \item Uploads the resulting PDF + \item Updates the \mintinline{sh}|.git/gitHeadInfo.gin| file with the latest Git information. + \item Update the BibTeX file from Zotero using the Zotero API, see \cref{sec:export-zotero-library:cli} + \item Compiles the \LaTeX{} document using \mintinline{bash}{xu-cheng/latex-action} on either the \texttt{ubuntu-latest} runner or the \texttt{self-texlive} runner hosted by the \texttt{feelpp} organization. + \item Uploads the resulting PDF and a Zip archive of the \LaTeX{} source files as artifacts that can be readily be uploaded to HAL, arXiv, Zenodo, etc. \item Creates a release with the PDF as an asset when a new tag is pushed of the type \texttt{v*}, e.g., \texttt{v1.0.0}. \end{itemize} @@ -126,7 +129,7 @@ \subsection{Full Article Workflow} Here is a summary of the full workflow for creating and maintaining a \LaTeX{} document with Git support: \begin{enumerate} - \item \textbf{Check out the organisation}: if the organization is \texttt{feelpp} and a \texttt{self-texlive} labelled runner is online, the compilation will be done using the \texttt{self-texlive} runner other it will use the \texttt{ubuntu-latest} runner. + \item \textbf{Check out the organization:} if the organization is \texttt{feelpp} and a \texttt{self-texlive} labelled runner is online, the compilation will be done using the \texttt{self-texlive} runner other it will use the \texttt{ubuntu-latest} runner. \item \textbf{Clone the Repository}: Clone the repository to your local machine: \begin{minted}[bgcolor=background]{sh} @@ -151,7 +154,7 @@ \subsection{Full Article Workflow} git push origin main \end{minted} \item \textbf{Create a Tag for Release}: - Create and push a tag, using semver\footnote{\url{https://semver.org}}, to trigger the GitHub Actions workflow for building and releasing the document: + Create and push a tag, using SemVer\footnote{\url{https://semver.org}}, to trigger the GitHub Actions workflow for building and releasing the document: \begin{minted}[bgcolor=background]{sh} ./a.cli create v1.0.0 \end{minted} @@ -203,22 +206,49 @@ \section{Image Naming Convention} \item \texttt{img-figure3.jpg} \end{itemize} -\section{Using References from Zotero via Overleaf} +\section{Using References from Zotero} -To manage your references with Zotero and integrate them seamlessly into Overleaf, follow these steps: +To manage your references with Zotero, you can either export your Zotero library to BibTeX using the command-line interface or the Zotero API, or you can use the Zotero integration in Overleaf. +Note that these methods are mutually exclusive, meaning you can use either one, but not both at the same time. + +\subsection{Export Zotero Library to BibTeX via Command-Line} +\label{sec:export-zotero-library:cli} +\begin{enumerate} + \item Get a key API for your Zotero account, a read-only key for the group collections is enough. + \item Define \mintinline{sh}|ZOTERO_API_KEY| in your environment. +\begin{minted}{sh} +export ZOTER_API_KEY=your key +\end{minted} + \item Update \mintinline{sh}|a.cli| and set \mintinline{sh}|DEFAULT_ZOTERO_GROUP_ID| at the top of the file or set the environment variable \mintinline{sh}|ZOTERO_GROUP_ID| or \mintinline{sh}|DEFAULT_ZOTERO_GROUP_ID|. + \item Use \mintinline{sh}|a.cli| to export the references. +\begin{minted}{sh} + bash a.cli update-bibtex +\end{minted} +\end{enumerate} -\subsection{Export Zotero Library to BibTeX} +\subsection{Export Zotero Library via Online or Desktop Interface} +\label{sec:export-zotero-library:interface} \begin{enumerate} \item Open Zotero and select the references you want to export. \item Go to \texttt{File > Export Library}. \item Choose \texttt{BibTeX} as the format and save the file (e.g., \texttt{references.bib}). \end{enumerate} -\subsection{Upload BibTeX File to Overleaf} +\subsection{Use Zotero Integration in Overleaf} + \begin{enumerate} - \item Open your project in Overleaf. - \item Click on the \texttt{Upload} button (top-left corner) and upload your \texttt{references.bib} file. -\end{enumerate} + \item Ensure you have a Zotero account and that your references are properly organized in your Zotero library. + \item In Overleaf, open your project and navigate to the left-hand menu where you can manage your bibliography. + \item Click on \texttt{Add Bibliography} and select \texttt{Zotero}. + \item You will be prompted to log into your Zotero account and authorize Overleaf to access your Zotero library. + \item Once connected, you can select the specific references or entire collections you wish to import into Overleaf. + \item Your bibliography will be automatically updated in Overleaf as you add or remove references from your Zotero library. + \item Use standard LaTeX citation commands such as \mintinline{latex}|\cite{key}| to reference your sources directly within the document. + \end{enumerate} + +This method allows for seamless integration, with no need to manually export and upload BibTeX files, as Overleaf will handle the citation syncing automatically. +Note that changes in your Zotero library will reflect in Overleaf after you refresh the project’s bibliography. +Again this method is mutually exclusive with the command-line method or direct export from Zotero interface. \subsection{Include the Bibliography in Your \LaTeX{} Document} @@ -287,26 +317,26 @@ \subsection{Commit and Push Changes} The GitHub Action workflow will automatically compile your \LaTeX{} document and upload the resulting PDF as an artifact. You can download the compiled PDF from the Actions tab in your repository. -\section{Overleaf Integration} - -\subsection{Sync GitHub Repository with Overleaf} -\begin{enumerate} - \item In Overleaf, create a new project and select \texttt{Import from GitHub}. - \item Connect your GitHub account and select the repository you want to sync. - \item The sync will trigger the workflow and compile your \LaTeX{} document in GitHub. -\end{enumerate} - -\subsection{Update References from Zotero} -\begin{enumerate} - \item Periodically export your references from Zotero to \texttt{references.bib} and push the updated file to your GitHub repository. - \item Overleaf will automatically sync the changes, ensuring your references are up-to-date. -\end{enumerate} +% \section{Overleaf Integration} +% +% \subsection{Sync GitHub Repository with Overleaf} +% \begin{enumerate} +% \item In Overleaf, create a new project and select \texttt{Import from GitHub}. +% \item Connect your GitHub account and select the repository you want to sync. +% \item The sync will trigger the workflow and compile your \LaTeX{} document in GitHub. +% \end{enumerate} +% +% \subsection{Update References from Zotero} +% \begin{enumerate} +% \item Periodically export your references from Zotero to \texttt{references.bib} and push the updated file to your GitHub repository. +% \item Overleaf will automatically sync the changes, ensuring your references are up-to-date. +% \end{enumerate} \section{Conclusion} \label{sec:conclusion} This template provides a comprehensive approach for creating and managing \LaTeX{} articles, integrating modern tools and workflow to enhance productivity and collaboration. -By leveraging GitHub Actions for automated compilation, Zotero for reference management, Overleaf for online editing, and VScode using \LaTeX{} workshop extension for editing, researchers can streamline the writing process and focus more on content creation. +By leveraging GitHub Actions for automated compilation, Zotero for reference management, Overleaf for online editing, and VSCode using \LaTeX{} workshop extension for editing, researchers can streamline the writing process and focus more on content creation. The structured setup ensures consistent formatting and efficient handling of images and references, making it suitable for both individual use and collaborative projects. diff --git a/references.bib b/references.bib index cc0403df..737df70f 100644 --- a/references.bib +++ b/references.bib @@ -1,42 +1,124 @@ -@software{brent_longborough_gitinfo2sty_2015, - title = {gitinfo2.sty: Use git repository metadata in {LaTeX} documents}, + +@misc{prudhomme_feelppfeelpp_2024, + title = {feelpp/feelpp: {Feel}++ {Release} {V111} preview.10}, + copyright = {Creative Commons Attribution 4.0 International, GNU Lesser General Public License v3.0 or later, GNU General Public License v3.0 or later}, + shorttitle = {feelpp/feelpp}, + url = {https://zenodo.org/doi/10.5281/zenodo.591797}, + abstract = {🎉 We're happy to share our developments as we approach the V111 release of Feel++. Following a refreshed naming strategy, we've moved to the -preview.x suffix from the conventional -alpha.x, -beta, or -rc labels. This change signifies our dedication to enhancing transparency and setting clear expectations for our pre-release versions. + +Each pre-release version of Feel++ undergoes a rigorous process, encompassing detailed reviews, extensive tests across varied scenarios, and careful packaging. Our commitment to delivering a high-quality, reliable experience is reflected in our comprehensive platform support strategy. Alongside offering support for the latest two Long-Term Support (LTS) versions of Ubuntu and the newest LTS version of Debian, we're excited to announce that Feel++ is now accessible to Windows users through the Windows Subsystem for Linux (WSL) and to Mac users via MacPorts, Homebrew, Docker and now Apptainer. This expansion of platform support is a testament to our commitment to making Feel++ as accessible and versatile as possible for our diverse user base. + +As we continue to refine and enhance Feel++, the V111 release promises to bring forward significant innovations and improvements. Stay tuned for further updates of Feel++. + +Packages + + + +📦 Ubuntu packages + +📦 Debian packages + +📦 Docker images + + +docker pull ghcr.io/feelpp/feelpp:v0.111.0-preview.10-jammy +docker run ghcr.io/feelpp/feelpp:v0.111.0-preview.10-jammy ls + + + + +📦 Apptainer images + + +apptainer pull -F oras://ghcr.io/feelpp/feelpp:v0.111.0-preview.10-jammy-sif +apptainer exec feelpp\_v0.111.0-preview.10-jammy-sif.sif feelpp\_toolbox\_fluid --version + + +What's Changed + +Exciting New Features 🎉 + + + +resolve 2231 : Support parts configuration in exporter by @vincentchabannes in https://github.com/feelpp/feelpp/pull/2232 + +resolves 1489 and 2175: enrich range object and simplify FunctionSpace by @prudhomm in https://github.com/feelpp/feelpp/pull/2176 + +resolves 2191 and 2196: cleanup and python wrapper for forms and implement feelpp namespace package by @prudhomm in https://github.com/feelpp/feelpp/pull/2227 + +resolves 2233: improve hdg toolbox, add new terms by @prudhomm in https://github.com/feelpp/feelpp/pull/2236 + +resolves 2259: add script to get feelpp version and improve packaging workflow by @prudhomm in https://github.com/feelpp/feelpp/pull/2260 + + +HPC Changes + + + +resolves 2246: fix non blocking mpi communication for large scale communications by @vincentchabannes in https://github.com/feelpp/feelpp/pull/2249 + + +Recent Publications using Feel++ + + + +Ktirio Urban Building: A Computational Framework for City Energy Simulations Enhanced by CI/CD Innovations on EuroHPC Systems + +Nonlinear compressive reduced basis approximation for multi-parameter elliptic problem + +2D Axisymmetric Modeling of the HTS Insert Nougat in a Background Magnetic Field Generated by Resistive Magnet + + +Enjoy! + +Full Changelog: https://github.com/feelpp/feelpp/compare/v0.111.0-preview.9...v0.111.0-preview.10}, + urldate = {2024-09-04}, + publisher = {[object Object]}, + author = {Prud'homme, Christophe and Chabannes, Vincent and Saigre, Thomas and Trophime, Christophe and Berti, Luca and Samaké, Abdoulaye and Van Landeghem, Céline and Szopos, Marcela and Giraldi, Laetitia and Bertoluzza, Silvia and Maday, Yvon}, + month = jul, + year = {2024}, + doi = {10.5281/ZENODO.591797}, +} + +@misc{brent_longborough_gitinfo2sty_2015, + title = {gitinfo2.sty: {Use} git repository metadata in {LaTeX} documents}, url = {https://github.com/Hightor/gitinfo2}, - abstract = {The `gitinfo2' package allows version control metadata to be incorporated into {LaTeX} documents; the metadata is obtained from the git distributed version control system.}, - version = {2.0.7}, + abstract = {The `gitinfo2' package allows version control metadata to be incorporated into LaTeX documents; the metadata is obtained from the git distributed version control system.}, author = {{Brent Longborough}}, - date = {2015-11-22}, + month = nov, + year = {2015}, } @article{dosimont_adapting_nodate, - title = {Adapting the Development of Alya Following a {CI} Approach}, + title = {Adapting the {Development} of {Alya} {Following} a {CI} {Approach}}, + language = {en}, author = {Dosimont, Damien}, - langid = {english}, } -@software{cheng_xu_xu-chenglatex-action_2024, +@misc{cheng_xu_xu-chenglatex-action_2024, title = {xu-cheng/latex-action}, url = {https://github.com/xu-cheng/latex-action/}, - abstract = {{GitHub} Action to compile {LaTeX} documents. + abstract = {GitHub Action to compile LaTeX documents. -It runs in a docker container with a full {TeXLive} environment installed. +It runs in a docker container with a full TeXLive environment installed. -If you want to run arbitrary commands in a {TeXLive} environment, use texlive-action instead.}, - version = {v3}, +If you want to run arbitrary commands in a TeXLive environment, use texlive-action instead.}, author = {{Cheng XU}}, - date = {2024}, + year = {2024}, } -@thesis{feppon_optimisation_2019, +@phdthesis{feppon_optimisation_2019, + type = {phdthesis}, title = {Optimisation topologique de systèmes multiphysiques}, url = {https://theses.hal.science/tel-02441844}, abstract = {This work is devoted to shape and topology optimization of multiphysics systemsmotivated by aeronautic industrial applications. Shape derivatives of arbitraryobjective functionals are computed for a weakly coupled thermal fluid-structuremodel. A novel gradient flow type algorithm is then developed for solving genericconstrained shape optimization problems without the need for tuning non-physicalmetaparameters. Motivated by the need for enforcing non-mixing constraints in thedesign of liquid-liquid heat exchangers, a variational method is developed in orderto simplify the numerical evaluation of geometric constraints: it allows to computeline integrals on a mesh by solving a variational problem without requiring theexplicit knowledge of these lines on the spatial discretization. All theseingredients allowed us to implement a variety of 2-d and 3-d multiphysics shapeoptimization test cases: from single, double or three physics problems in 2-d, tomoderately large-scale 3-d test cases for structural design, thermal conduction,aerodynamic design and a fluid-structure interacting system. A final opening chapterderives high order homogenized equations for perforated elliptic systems. These highorder equations encompass the three classical regimes of homogenized modelsassociated with different obstacle's size scalings. They could allow, in futureworks, to develop new topology optimization methods for fluid systems characterizedby multi-scale patterns as commonly encountered in industrial heat exchanger designs.}, - institution = {Université Paris Saclay ({COmUE})}, - type = {phdthesis}, - author = {Feppon, Florian}, + language = {en}, urldate = {2023-03-16}, - date = {2019-12-16}, - langid = {english}, + school = {Université Paris Saclay (COmUE)}, + author = {Feppon, Florian}, + month = dec, + year = {2019}, } @article{dapogny_geometrical_2018, @@ -45,77 +127,77 @@ @article{dapogny_geometrical_2018 issn = {1615-147X, 1615-1488}, url = {http://link.springer.com/10.1007/s00158-018-2023-2}, doi = {10.1007/s00158-018-2023-2}, - pages = {2761--2788}, + language = {en}, number = {6}, - journaltitle = {Structural and Multidisciplinary Optimization}, - shortjournal = {Struct Multidisc Optim}, - author = {Dapogny, Charles and Frey, Pascal and Omnès, Florian and Privat, Yannick}, urldate = {2023-03-16}, - date = {2018-12}, - langid = {english}, + journal = {Structural and Multidisciplinary Optimization}, + author = {Dapogny, Charles and Frey, Pascal and Omnès, Florian and Privat, Yannick}, + month = dec, + year = {2018}, + pages = {2761--2788}, } @article{pironneau_optimum_1973, - title = {On optimum profiles in Stokes flow}, + title = {On optimum profiles in {Stokes} flow}, volume = {59}, issn = {0022-1120, 1469-7645}, url = {https://www.cambridge.org/core/product/identifier/S002211207300145X/type/journal_article}, doi = {10.1017/S002211207300145X}, abstract = {In this paper, we obtain the first-order necessary optimality conditions of an optimal control problem for a distributed parameter system with geometric control, namely, the minimum-drag problem in Stokes flow (flow at a very low Reynolds number). We find that the unit-volume body with smallest drag must be such that the magnitude of the normal derivative of the velocity of the fluid is constant on the boundary of the body. In a three-dimensional uniform flow, this condition implies that the body with minimum drag has the shape of a pointed body similar in general shape to a prolate spheroid but with some differences including conical front and rear ends of angle 120°.}, - pages = {117--128}, + language = {en}, number = {1}, - journaltitle = {Journal of Fluid Mechanics}, - shortjournal = {J. Fluid Mech.}, - author = {Pironneau, O.}, urldate = {2023-03-16}, - date = {1973-06-05}, - langid = {english}, + journal = {Journal of Fluid Mechanics}, + author = {Pironneau, O.}, + month = jun, + year = {1973}, + pages = {117--128}, } @book{allaire_conception_2006, + series = {Mathématiques \& applications}, title = {Conception optimale de structures}, volume = {58}, isbn = {9783540367109}, url = {http://link.springer.com/10.1007/978-3-540-36856-4}, - series = {Mathématiques \& applications}, + language = {fr}, + urldate = {2023-03-16}, publisher = {Springer Berlin Heidelberg}, author = {Allaire, Gregoire}, - urldate = {2023-03-16}, - date = {2006}, - langid = {french}, + year = {2006}, doi = {10.1007/978-3-540-36856-4}, } @article{cockburn_bridging_2016, - title = {Bridging the hybrid high-order and hybridizable discontinuous Galerkin methods}, + title = {Bridging the hybrid high-order and hybridizable discontinuous {Galerkin} methods}, volume = {50}, issn = {0764-583X, 1290-3841}, url = {http://www.esaim-m2an.org/10.1051/m2an/2015051}, doi = {10.1051/m2an/2015051}, - abstract = {We build a bridge between the hybrid high-order ({HHO}) and the hybridizable discontinuous Galerkin ({HDG}) methods in the setting of a model diffusion problem. First, we briefly recall the construction of {HHO} methods and derive some new variants. Then, by casting the {HHO} method in mixed form, we identify the numerical flux so that the {HHO} method can be compared to {HDG} methods. In turn, the incorporation of the {HHO} method into the {HDG} framework brings up new, efficient choices of the local spaces and a new, subtle construction of the numerical flux ensuring optimal orders of convergence on meshes made of general shape-regular polyhedral elements. Numerical experiments comparing two of these methods are shown.}, - pages = {635--650}, + abstract = {We build a bridge between the hybrid high-order (HHO) and the hybridizable discontinuous Galerkin (HDG) methods in the setting of a model diffusion problem. First, we briefly recall the construction of HHO methods and derive some new variants. Then, by casting the HHO method in mixed form, we identify the numerical flux so that the HHO method can be compared to HDG methods. In turn, the incorporation of the HHO method into the HDG framework brings up new, efficient choices of the local spaces and a new, subtle construction of the numerical flux ensuring optimal orders of convergence on meshes made of general shape-regular polyhedral elements. Numerical experiments comparing two of these methods are shown.}, + language = {en}, number = {3}, - journaltitle = {{ESAIM}: Mathematical Modelling and Numerical Analysis}, - shortjournal = {{ESAIM}: M2AN}, - author = {Cockburn, Bernardo and Di Pietro, Daniele A. and Ern, Alexandre}, urldate = {2022-05-02}, - date = {2016-05}, - langid = {english}, + journal = {ESAIM: Mathematical Modelling and Numerical Analysis}, + author = {Cockburn, Bernardo and Di Pietro, Daniele A. and Ern, Alexandre}, + month = may, + year = {2016}, + pages = {635--650}, } @article{cockburn_bridging_2016-1, - title = {Bridging the hybrid high-order and hybridizable discontinuous Galerkin methods}, + title = {Bridging the hybrid high-order and hybridizable discontinuous {Galerkin} methods}, volume = {50}, issn = {0764-583X, 1290-3841}, url = {http://www.esaim-m2an.org/10.1051/m2an/2015051}, doi = {10.1051/m2an/2015051}, - abstract = {We build a bridge between the hybrid high-order ({HHO}) and the hybridizable discontinuous Galerkin ({HDG}) methods in the setting of a model diffusion problem. First, we briefly recall the construction of {HHO} methods and derive some new variants. Then, by casting the {HHO} method in mixed form, we identify the numerical flux so that the {HHO} method can be compared to {HDG} methods. In turn, the incorporation of the {HHO} method into the {HDG} framework brings up new, efficient choices of the local spaces and a new, subtle construction of the numerical flux ensuring optimal orders of convergence on meshes made of general shape-regular polyhedral elements. Numerical experiments comparing two of these methods are shown.}, - pages = {635--650}, + abstract = {We build a bridge between the hybrid high-order (HHO) and the hybridizable discontinuous Galerkin (HDG) methods in the setting of a model diffusion problem. First, we briefly recall the construction of HHO methods and derive some new variants. Then, by casting the HHO method in mixed form, we identify the numerical flux so that the HHO method can be compared to HDG methods. In turn, the incorporation of the HHO method into the HDG framework brings up new, efficient choices of the local spaces and a new, subtle construction of the numerical flux ensuring optimal orders of convergence on meshes made of general shape-regular polyhedral elements. Numerical experiments comparing two of these methods are shown.}, + language = {en}, number = {3}, - journaltitle = {{ESAIM}: Mathematical Modelling and Numerical Analysis}, - shortjournal = {{ESAIM}: M2AN}, - author = {Cockburn, Bernardo and Di Pietro, Daniele A. and Ern, Alexandre}, urldate = {2022-05-01}, - date = {2016-05}, - langid = {english}, + journal = {ESAIM: Mathematical Modelling and Numerical Analysis}, + author = {Cockburn, Bernardo and Di Pietro, Daniele A. and Ern, Alexandre}, + month = may, + year = {2016}, + pages = {635--650}, }