Refactor code structure and remove redundant changes

parent db07d1b1
......@@ -49,13 +49,13 @@
\cortext[cor1]{Corresponding author.}
\affiliation[aff1]{organization={Centre Internacional de Metodes Numerics en Enginyeria (CIMNE)},
\affiliation[aff1]{organization={International Center for Numerical Methods in Engineering (CIMNE)},
city={Barcelona},
country={Spain}}
\affiliation[aff2]{organization={Flumen Research Institute},
city={Barcelona},
country={Spain}}
\affiliation[aff3]{organization={Universitat Politecnica de Catalunya (UPC)},
\affiliation[aff3]{organization={Polytechnic University of Catalonia - Barcelona Tech},
city={Barcelona},
country={Spain}}
\affiliation[aff4]{organization={SLB Devices},
......@@ -66,7 +66,7 @@
country={Spain}}
\begin{abstract}
Buckling-delayed shear-link dampers are used in seismic-resistant structures as passive devices that concentrate energy dissipation while limiting damage to the primary system. Their geometric optimization requires balancing high energy dissipation with strict control of local damage. Finite element models can accurately reproduce the nonlinear response of these devices under cyclic load and provide useful internal quantities for the optimization such as damage indicators and local distortion. However, their computational cost prevents their direct use within iterative optimization loops. This work proposes an adaptive surrogate-assisted optimization framework for buckling-delayed shear-link dampers. First, experimentally calibrated nonlinear finite element models are used to generate reference datasets for dampers with different geometric and mechanical configurations. Supervised learning models are initially evaluated, with support vector regression and Gaussian process regression consistently providing high predictive accuracy. This suggests that kernel-based, distance-dependent approximations are well suited to the problem, motivating the introduction of radial basis function surrogates as a computationally efficient alternative. The surrogate predictions are coupled with a differential evolution algorithm through a damage-aware objective function that controls local damage and uses dissipated energy as a performance criterion. Optimized geometries are finally re-evaluated with finite element simulations. When the surrogate error exceeds the adopted tolerances, the new simulation result is added to the dataset and the surrogate models are retrained. The proposed framework provides an efficient damage-aware optimization of seismic energy dissipation devices.
Buckling-delayed shear-link dampers are passive devices used in seismic-resistant structures to concentrate energy dissipation while limiting damage to the primary system. Their geometric optimization requires balancing high dissipative capacity with strict control of local damage. Nonlinear finite element models can reproduce their cyclic response and provide internal quantities for optimization, such as damage indicators and local distortion, but their computational cost prevents direct use within iterative optimization loops. This work proposes an adaptive surrogate-assisted optimization framework for buckling-delayed shear-link dampers. Experimentally calibrated nonlinear finite element models are first used to generate reference datasets for different device configurations. Supervised learning models are evaluated, with support vector regression and Gaussian process regression showing high predictive accuracy, motivating the use of radial basis function surrogates as a more efficient distance-based alternative. The surrogate predictions are coupled with a differential evolution algorithm through a damage-aware objective function that controls local damage while using dissipative performance as an optimization criterion. The optimized geometries are then re-evaluated with finite element simulations. If the surrogate error exceeds the adopted tolerances, the new simulation is added to the dataset and the surrogate models are retrained. The framework enables efficient damage-aware optimization of seismic energy dissipation devices.
\end{abstract}
\begin{highlights}
......@@ -77,7 +77,7 @@ Buckling-delayed shear-link dampers are used in seismic-resistant structures as
\end{highlights}
\begin{keyword}
Buckling-delayed shear link \sep seismic energy dissipation \sep FEM validation \sep surrogate modelling \sep machine learning \sep radial basis functions \sep Differential Evolution
Buckling-delayed shear link \sep seismic energy dissipation \sep FEM validation \sep surrogate modelling \sep radial basis functions \sep Differential Evolution
\end{keyword}
\end{frontmatter}
......@@ -800,18 +800,10 @@ Iter. & Source & $\mathbf{t}_w$ [mm] & $\boldsymbol{\varepsilon}_{xy}$ & $\bolds
\end{tabular}
\end{table*}
\section*{CRediT authorship contribution statement}
Conceptualization: J. Irazábal, J. Ramírez, J. M. González, G. Bozzo, L. Bozzo. Methodology: J. Irazábal, J. Ramírez, J. M. González. Software and surrogate optimization: J. Irazábal. FEM modelling and validation: J. Ramírez, J. M. González, L. Lázaro, F. Rastellini. Writing--original draft: J. Irazábal. Writing--review and editing: all authors.
\section*{Funding}
This work was supported by the Generalitat de Catalunya [grant number ACE100/23/000022].
\section*{Declaration of competing interest}
The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.
\section*{Data availability}
Due to confidentiality constraints associated with the industrial device geometries, the data associated with this study are available from the corresponding author upon reasonable request.
......
File added
This is Elsevier's new document class for typeset journal articles,
elsarticle.cls. It is now accepted for submitted articles, both in
Elsevier's electronic submission system and elsewhere.
Elsevier's previous document class for typeset articles, elsart.cls,
is now over 15 years old. It has been replaced with this newly written
document class elsarticle.cls, which has been developed for Elsevier
by the leading TeX developer STM Document Engineering Pvt Ltd.
elsarticle.cls is based upon the standard LaTeX document class
article.cls. It uses natbib.sty for bibliographical references.
Bugs and problems with elsarticle.cls may be reported to the
developers of the class via elsarticle@stmdocs.in.
The file manifest.txt provides a list of the files in the elsarticle
bundle. The following are the main files available:
- elsarticle.dtx, the dtx file
- elsdoc.pdf, the user documentation
- elsarticle-template-num.tex, template file for numerical citations
- elsarticle-template-harv.tex, template file for name-year citations
- elsarticle-template-num-names.tex, template file for numerical
citations + new natbib option. Eg. Jones et al. [21]
- elsarticle-num.bst, bibliographic style for numerical references
- elsarticle-harv.bst, bibliographic style for name-year references
- elsarticle-num-names.bst, bibliographic style for numerical
referencces + new natbib option for citations.
To extract elsarticle.cls from *.dtx: latex elsarticle.ins
The documentation file is elsdoc.tex in the contrib directory. To
compile it:
1. pdflatex elsdoc
2. pdflatex elsdoc
3. pdflatex elsdoc
or
use the makefile. Use the target `all' (eg: make all).
The above procedure will create a print version, namely elsdoc.pdf.
Copyright 2007-2024, Elsevier. Bugs, feature requests, suggestions and
comments may be mailed to elsarticle@stmdocs.in. elsarticle.cls,
related documentation and supporting packages are released under the
LATEX Project Public Licence, either version 1.3 or any later
version. This work has the LPPL maintenance status
'author-maintained'.
Change Log
-----------
* elsarticle.dtx
1. Frontmatter: Overfull \hbox has occurred while \output is active
https://tex.stackexchange.com/questions/514218/elsarticle-frontmatter-overfull-hbox-has-occurred-while-output-is-active/515199
2. Footnotes: Updated to use non Arabic footnote numbers.
https://tex.stackexchange.com/questions/669879/elsarticle-changing-symbol-used-in-fnref
3. Author-affiliation: Updated for author-wise affiliation coding.
Last author affiliation repeating for all authors problem is fixed.
4. Accent characters in address: A bug fix. Accented characters in
organisation field showed error. Hence loaded fontenc package.
5. Updated for accent problems in TeXLive 2022. Font encoding T1 used
by default
6. Removed extra space appearing after 'Appendix' label
7. updated for listing author affiliation below author names if
\affiliation command is used immediately after \author (To match
behaviour of \address command)
* elsarticle-template-harv.tex, \
elsarticle-template-num-names.tex, \
elsarticle-template-num.tex
1. Added examples for figures, tables and equations
------------------------------------------------------------------------
This source diff could not be displayed because it is too large. You can view the blob instead.
# $Id: makefile 243 2024-04-06 10:34:40Z rishi $
file=elsdoc
all: pdf out
make pdf
make pdf
out:
if [ -f $(file).out ] ; then cp $(file).out tmp.out; fi ;
sed 's/BOOKMARK/dtxmark/g;' tmp.out > x.out; mv x.out tmp.out ;
pdf:
pdflatex $(file).tex
index:
makeindex -s gind.ist -o $(file).ind $(file).idx
changes:
makeindex -s gglo.ist -o $(file).gls $(file).glo
xview:
# xpdf -z 200 $(file).pdf &>/dev/null
open -a 'Skim.app' $(file).pdf
view:
open -a 'Adobe Reader.app' $(file).pdf
ins:
latex $(file).ins
diff:
diff $(file).sty ../$(file).sty |less
copy:
cp $(file).sty ../
%%
%% Copyright 2007-2024 Elsevier Ltd
%%
%% This file is part of the 'Elsarticle Bundle'.
%% ---------------------------------------------
%%
%% It may be distributed under the conditions of the LaTeX Project Public
%% License, either version 1.3 of this license or (at your option) any
%% later version. The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
%% The list of all files belonging to the 'Elsarticle Bundle' is
%% given in the file `manifest.txt'.
%%
%% Template article for Elsevier's document class `elsarticle'
%% with harvard style bibliographic references
\documentclass[preprint,12pt,authoryear]{elsarticle}
%% Use the option review to obtain double line spacing
%% \documentclass[authoryear,preprint,review,12pt]{elsarticle}
%% Use the options 1p,twocolumn; 3p; 3p,twocolumn; 5p; or 5p,twocolumn
%% for a journal layout:
%% \documentclass[final,1p,times,authoryear]{elsarticle}
%% \documentclass[final,1p,times,twocolumn,authoryear]{elsarticle}
%% \documentclass[final,3p,times,authoryear]{elsarticle}
%% \documentclass[final,3p,times,twocolumn,authoryear]{elsarticle}
%% \documentclass[final,5p,times,authoryear]{elsarticle}
%% \documentclass[final,5p,times,twocolumn,authoryear]{elsarticle}
%% For including figures, graphicx.sty has been loaded in
%% elsarticle.cls. If you prefer to use the old commands
%% please give \usepackage{epsfig}
%% The amssymb package provides various useful mathematical symbols
\usepackage{amssymb}
%% The amsmath package provides various useful equation environments.
\usepackage{amsmath}
%% The amsthm package provides extended theorem environments
%% \usepackage{amsthm}
%% The lineno packages adds line numbers. Start line numbering with
%% \begin{linenumbers}, end it with \end{linenumbers}. Or switch it on
%% for the whole article with \linenumbers.
%% \usepackage{lineno}
\journal{Nuclear Physics B}
\begin{document}
\begin{frontmatter}
%% Title, authors and addresses
%% use the tnoteref command within \title for footnotes;
%% use the tnotetext command for theassociated footnote;
%% use the fnref command within \author or \affiliation for footnotes;
%% use the fntext command for theassociated footnote;
%% use the corref command within \author for corresponding author footnotes;
%% use the cortext command for theassociated footnote;
%% use the ead command for the email address,
%% and the form \ead[url] for the home page:
%% \title{Title\tnoteref{label1}}
%% \tnotetext[label1]{}
%% \author{Name\corref{cor1}\fnref{label2}}
%% \ead{email address}
%% \ead[url]{home page}
%% \fntext[label2]{}
%% \cortext[cor1]{}
%% \affiliation{organization={},
%% addressline={},
%% city={},
%% postcode={},
%% state={},
%% country={}}
%% \fntext[label3]{}
\title{} %% Article title
%% use optional labels to link authors explicitly to addresses:
%% \author[label1,label2]{}
%% \affiliation[label1]{organization={},
%% addressline={},
%% city={},
%% postcode={},
%% state={},
%% country={}}
%%
%% \affiliation[label2]{organization={},
%% addressline={},
%% city={},
%% postcode={},
%% state={},
%% country={}}
\author{} %% Author name
%% Author affiliation
\affiliation{organization={},%Department and Organization
addressline={},
city={},
postcode={},
state={},
country={}}
%% Abstract
\begin{abstract}
%% Text of abstract
Abstract text.
\end{abstract}
%%Graphical abstract
\begin{graphicalabstract}
%\includegraphics{grabs}
\end{graphicalabstract}
%%Research highlights
\begin{highlights}
\item Research highlight 1
\item Research highlight 2
\end{highlights}
%% Keywords
\begin{keyword}
%% keywords here, in the form: keyword \sep keyword
%% PACS codes here, in the form: \PACS code \sep code
%% MSC codes here, in the form: \MSC code \sep code
%% or \MSC[2008] code \sep code (2000 is the default)
\end{keyword}
\end{frontmatter}
%% Add \usepackage{lineno} before \begin{document} and uncomment
%% following line to enable line numbers
%% \linenumbers
%% main text
%%
%% Use \section commands to start a section
\section{Example Section}
\label{sec1}
%% Labels are used to cross-reference an item using \ref command.
Section text. See Subsection \ref{subsec1}.
%% Use \subsection commands to start a subsection.
\subsection{Example Subsection}
\label{subsec1}
Subsection text.
%% Use \subsubsection, \paragraph, \subparagraph commands to
%% start 3rd, 4th and 5th level sections.
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Document_Structure#Sectioning_commands
\subsubsection{Mathematics}
%% Inline mathematics is tagged between $ symbols.
This is an example for the symbol $\alpha$ tagged as inline mathematics.
%% Displayed equations can be tagged using various environments.
%% Single line equations can be tagged using the equation environment.
\begin{equation}
f(x) = (x+a)(x+b)
\end{equation}
%% Unnumbered equations are tagged using starred versions of the environment.
%% amsmath package needs to be loaded for the starred version of equation environment.
\begin{equation*}
f(x) = (x+a)(x+b)
\end{equation*}
%% align or eqnarray environments can be used for multi line equations.
%% & is used to mark alignment points in equations.
%% \\ is used to end a row in a multiline equation.
\begin{align}
f(x) &= (x+a)(x+b) \\
&= x^2 + (a+b)x + ab
\end{align}
\begin{eqnarray}
f(x) &=& (x+a)(x+b) \nonumber\\ %% If equation numbering is not needed for a row use \nonumber.
&=& x^2 + (a+b)x + ab
\end{eqnarray}
%% Unnumbered versions of align and eqnarray
\begin{align*}
f(x) &= (x+a)(x+b) \\
&= x^2 + (a+b)x + ab
\end{align*}
\begin{eqnarray*}
f(x)&=& (x+a)(x+b) \\
&=& x^2 + (a+b)x + ab
\end{eqnarray*}
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Mathematics
%% https://en.wikibooks.org/wiki/LaTeX/Advanced_Mathematics
%% Use a table environment to create tables.
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Tables
\begin{table}[t]%% placement specifier
%% Use tabular environment to tag the tabular data.
%% https://en.wikibooks.org/wiki/LaTeX/Tables#The_tabular_environment
\centering%% For centre alignment of tabular.
\begin{tabular}{l c r}%% Table column specifiers
%% Tabular cells are separated by &
1 & 2 & 3 \\ %% A tabular row ends with \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{tabular}
%% Use \caption command for table caption and label.
\caption{Table Caption}\label{fig1}
\end{table}
%% Use figure environment to create figures
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions
\begin{figure}[t]%% placement specifier
%% Use \includegraphics command to insert graphic files. Place graphics files in
%% working directory.
\centering%% For centre alignment of image.
\includegraphics{example-image-a}
%% Use \caption command for figure caption and label.
\caption{Figure Caption}\label{fig1}
%% https://en.wikibooks.org/wiki/LaTeX/Importing_Graphics#Importing_external_graphics
\end{figure}
%% The Appendices part is started with the command \appendix;
%% appendix sections are then done as normal sections
\appendix
\section{Example Appendix Section}
\label{app1}
Appendix text.
%% For citations use:
%% \citet{<label>} ==> Lamport (1994)
%% \citep{<label>} ==> (Lamport, 1994)
%%
Example citation, See \citet{lamport94}.
%% If you have bib database file and want bibtex to generate the
%% bibitems, please use
%%
%% \bibliographystyle{elsarticle-harv}
%% \bibliography{<your bibdatabase>}
%% else use the following coding to input the bibitems directly in the
%% TeX file.
%% Refer following link for more details about bibliography and citations.
%% https://en.wikibooks.org/wiki/LaTeX/Bibliography_Management
\begin{thebibliography}{00}
%% For authoryear reference style
%% \bibitem[Author(year)]{label}
%% Text of bibliographic item
\bibitem[Lamport(1994)]{lamport94}
Leslie Lamport,
\textit{\LaTeX: a document preparation system},
Addison Wesley, Massachusetts,
2nd edition,
1994.
\end{thebibliography}
\end{document}
\endinput
%%
%% End of file `elsarticle-template-harv.tex'.
%%
%% Copyright 2007-2024 Elsevier Ltd
%%
%% This file is part of the 'Elsarticle Bundle'.
%% ---------------------------------------------
%%
%% It may be distributed under the conditions of the LaTeX Project Public
%% License, either version 1.3 of this license or (at your option) any
%% later version. The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
%% The list of all files belonging to the 'Elsarticle Bundle' is
%% given in the file `manifest.txt'.
%%
%% Template article for Elsevier's document class `elsarticle'
%% with harvard style bibliographic references
\documentclass[preprint,12pt]{elsarticle}
%% Use the option review to obtain double line spacing
%% \documentclass[preprint,review,12pt]{elsarticle}
%% Use the options 1p,twocolumn; 3p; 3p,twocolumn; 5p; or 5p,twocolumn
%% for a journal layout:
%% \documentclass[final,1p,times]{elsarticle}
%% \documentclass[final,1p,times,twocolumn]{elsarticle}
%% \documentclass[final,3p,times]{elsarticle}
%% \documentclass[final,3p,times,twocolumn]{elsarticle}
%% \documentclass[final,5p,times]{elsarticle}
%% \documentclass[final,5p,times,twocolumn]{elsarticle}
%% For including figures, graphicx.sty has been loaded in
%% elsarticle.cls. If you prefer to use the old commands
%% please give \usepackage{epsfig}
%% The amssymb package provides various useful mathematical symbols
\usepackage{amssymb}
%% The amsmath package provides various useful equation environments.
\usepackage{amsmath}
%% The amsthm package provides extended theorem environments
%% \usepackage{amsthm}
%% The lineno packages adds line numbers. Start line numbering with
%% \begin{linenumbers}, end it with \end{linenumbers}. Or switch it on
%% for the whole article with \linenumbers.
%% \usepackage{lineno}
\journal{Nuclear Physics B}
\begin{document}
\begin{frontmatter}
%% Title, authors and addresses
%% use the tnoteref command within \title for footnotes;
%% use the tnotetext command for theassociated footnote;
%% use the fnref command within \author or \affiliation for footnotes;
%% use the fntext command for theassociated footnote;
%% use the corref command within \author for corresponding author footnotes;
%% use the cortext command for theassociated footnote;
%% use the ead command for the email address,
%% and the form \ead[url] for the home page:
%% \title{Title\tnoteref{label1}}
%% \tnotetext[label1]{}
%% \author{Name\corref{cor1}\fnref{label2}}
%% \ead{email address}
%% \ead[url]{home page}
%% \fntext[label2]{}
%% \cortext[cor1]{}
%% \affiliation{organization={},
%% addressline={},
%% city={},
%% postcode={},
%% state={},
%% country={}}
%% \fntext[label3]{}
\title{} %% Article title
%% use optional labels to link authors explicitly to addresses:
%% \author[label1,label2]{}
%% \affiliation[label1]{organization={},
%% addressline={},
%% city={},
%% postcode={},
%% state={},
%% country={}}
%%
%% \affiliation[label2]{organization={},
%% addressline={},
%% city={},
%% postcode={},
%% state={},
%% country={}}
\author{} %% Author name
%% Author affiliation
\affiliation{organization={},%Department and Organization
addressline={},
city={},
postcode={},
state={},
country={}}
%% Abstract
\begin{abstract}
%% Text of abstract
Abstract text.
\end{abstract}
%%Graphical abstract
\begin{graphicalabstract}
%\includegraphics{grabs}
\end{graphicalabstract}
%%Research highlights
\begin{highlights}
\item Research highlight 1
\item Research highlight 2
\end{highlights}
%% Keywords
\begin{keyword}
%% keywords here, in the form: keyword \sep keyword
%% PACS codes here, in the form: \PACS code \sep code
%% MSC codes here, in the form: \MSC code \sep code
%% or \MSC[2008] code \sep code (2000 is the default)
\end{keyword}
\end{frontmatter}
%% Add \usepackage{lineno} before \begin{document} and uncomment
%% following line to enable line numbers
%% \linenumbers
%% main text
%%
%% Use \section commands to start a section
\section{Example Section}
\label{sec1}
%% Labels are used to cross-reference an item using \ref command.
Section text. See Subsection \ref{subsec1}.
%% Use \subsection commands to start a subsection.
\subsection{Example Subsection}
\label{subsec1}
Subsection text.
%% Use \subsubsection, \paragraph, \subparagraph commands to
%% start 3rd, 4th and 5th level sections.
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Document_Structure#Sectioning_commands
\subsubsection{Mathematics}
%% Inline mathematics is tagged between $ symbols.
This is an example for the symbol $\alpha$ tagged as inline mathematics.
%% Displayed equations can be tagged using various environments.
%% Single line equations can be tagged using the equation environment.
\begin{equation}
f(x) = (x+a)(x+b)
\end{equation}
%% Unnumbered equations are tagged using starred versions of the environment.
%% amsmath package needs to be loaded for the starred version of equation environment.
\begin{equation*}
f(x) = (x+a)(x+b)
\end{equation*}
%% align or eqnarray environments can be used for multi line equations.
%% & is used to mark alignment points in equations.
%% \\ is used to end a row in a multiline equation.
\begin{align}
f(x) &= (x+a)(x+b) \\
&= x^2 + (a+b)x + ab
\end{align}
\begin{eqnarray}
f(x) &=& (x+a)(x+b) \nonumber\\ %% If equation numbering is not needed for a row use \nonumber.
&=& x^2 + (a+b)x + ab
\end{eqnarray}
%% Unnumbered versions of align and eqnarray
\begin{align*}
f(x) &= (x+a)(x+b) \\
&= x^2 + (a+b)x + ab
\end{align*}
\begin{eqnarray*}
f(x)&=& (x+a)(x+b) \\
&=& x^2 + (a+b)x + ab
\end{eqnarray*}
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Mathematics
%% https://en.wikibooks.org/wiki/LaTeX/Advanced_Mathematics
%% Use a table environment to create tables.
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Tables
\begin{table}[t]%% placement specifier
%% Use tabular environment to tag the tabular data.
%% https://en.wikibooks.org/wiki/LaTeX/Tables#The_tabular_environment
\centering%% For centre alignment of tabular.
\begin{tabular}{l c r}%% Table column specifiers
%% Tabular cells are separated by &
1 & 2 & 3 \\ %% A tabular row ends with \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{tabular}
%% Use \caption command for table caption and label.
\caption{Table Caption}\label{fig1}
\end{table}
%% Use figure environment to create figures
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions
\begin{figure}[t]%% placement specifier
%% Use \includegraphics command to insert graphic files. Place graphics files in
%% working directory.
\centering%% For centre alignment of image.
\includegraphics{example-image-a}
%% Use \caption command for figure caption and label.
\caption{Figure Caption}\label{fig1}
%% https://en.wikibooks.org/wiki/LaTeX/Importing_Graphics#Importing_external_graphics
\end{figure}
%% The Appendices part is started with the command \appendix;
%% appendix sections are then done as normal sections
\appendix
\section{Example Appendix Section}
\label{app1}
Appendix text.
%% For citations use:
%% \citet{<label>} ==> Lamport [21]
%% \citep{<label>} ==> [21]
%%
Example citation, See \citet{lamport94}.
%% If you have bib database file and want bibtex to generate the
%% bibitems, please use
%%
%% \bibliographystyle{elsarticle-num-names}
%% \bibliography{<your bibdatabase>}
%% else use the following coding to input the bibitems directly in the
%% TeX file.
%% Refer following link for more details about bibliography and citations.
%% https://en.wikibooks.org/wiki/LaTeX/Bibliography_Management
\begin{thebibliography}{00}
%% For authoryear reference style
%% \bibitem[Author(year)]{label}
%% Text of bibliographic item
\bibitem[Lamport(1994)]{lamport94}
Leslie Lamport,
\textit{\LaTeX: a document preparation system},
Addison Wesley, Massachusetts,
2nd edition,
1994.
\end{thebibliography}
\end{document}
\endinput
%%
%% End of file `elsarticle-template-num-names.tex'.
%%
%% Copyright 2007-2024 Elsevier Ltd
%%
%% This file is part of the 'Elsarticle Bundle'.
%% ---------------------------------------------
%%
%% It may be distributed under the conditions of the LaTeX Project Public
%% License, either version 1.3 of this license or (at your option) any
%% later version. The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
%% The list of all files belonging to the 'Elsarticle Bundle' is
%% given in the file `manifest.txt'.
%%
%% Template article for Elsevier's document class `elsarticle'
%% with numbered style bibliographic references
%% SP 2008/03/01
%% $Id: elsarticle-template-num.tex 249 2024-04-06 10:51:24Z rishi $
%%
\documentclass[preprint,12pt]{elsarticle}
%% Use the option review to obtain double line spacing
%% \documentclass[authoryear,preprint,review,12pt]{elsarticle}
%% Use the options 1p,twocolumn; 3p; 3p,twocolumn; 5p; or 5p,twocolumn
%% for a journal layout:
%% \documentclass[final,1p,times]{elsarticle}
%% \documentclass[final,1p,times,twocolumn]{elsarticle}
%% \documentclass[final,3p,times]{elsarticle}
%% \documentclass[final,3p,times,twocolumn]{elsarticle}
%% \documentclass[final,5p,times]{elsarticle}
%% \documentclass[final,5p,times,twocolumn]{elsarticle}
%% For including figures, graphicx.sty has been loaded in
%% elsarticle.cls. If you prefer to use the old commands
%% please give \usepackage{epsfig}
%% The amssymb package provides various useful mathematical symbols
\usepackage{amssymb}
%% The amsmath package provides various useful equation environments.
\usepackage{amsmath}
%% The amsthm package provides extended theorem environments
%% \usepackage{amsthm}
%% The lineno packages adds line numbers. Start line numbering with
%% \begin{linenumbers}, end it with \end{linenumbers}. Or switch it on
%% for the whole article with \linenumbers.
%% \usepackage{lineno}
\journal{Nuclear Physics B}
\begin{document}
\begin{frontmatter}
%% Title, authors and addresses
%% use the tnoteref command within \title for footnotes;
%% use the tnotetext command for theassociated footnote;
%% use the fnref command within \author or \affiliation for footnotes;
%% use the fntext command for theassociated footnote;
%% use the corref command within \author for corresponding author footnotes;
%% use the cortext command for theassociated footnote;
%% use the ead command for the email address,
%% and the form \ead[url] for the home page:
%% \title{Title\tnoteref{label1}}
%% \tnotetext[label1]{}
%% \author{Name\corref{cor1}\fnref{label2}}
%% \ead{email address}
%% \ead[url]{home page}
%% \fntext[label2]{}
%% \cortext[cor1]{}
%% \affiliation{organization={},
%% addressline={},
%% city={},
%% postcode={},
%% state={},
%% country={}}
%% \fntext[label3]{}
\title{}
%% use optional labels to link authors explicitly to addresses:
%% \author[label1,label2]{}
%% \affiliation[label1]{organization={},
%% addressline={},
%% city={},
%% postcode={},
%% state={},
%% country={}}
%%
%% \affiliation[label2]{organization={},
%% addressline={},
%% city={},
%% postcode={},
%% state={},
%% country={}}
\author{} %% Author name
%% Author affiliation
\affiliation{organization={},%Department and Organization
addressline={},
city={},
postcode={},
state={},
country={}}
%% Abstract
\begin{abstract}
%% Text of abstract
Abstract text.
\end{abstract}
%%Graphical abstract
\begin{graphicalabstract}
%\includegraphics{grabs}
\end{graphicalabstract}
%%Research highlights
\begin{highlights}
\item Research highlight 1
\item Research highlight 2
\end{highlights}
%% Keywords
\begin{keyword}
%% keywords here, in the form: keyword \sep keyword
%% PACS codes here, in the form: \PACS code \sep code
%% MSC codes here, in the form: \MSC code \sep code
%% or \MSC[2008] code \sep code (2000 is the default)
\end{keyword}
\end{frontmatter}
%% Add \usepackage{lineno} before \begin{document} and uncomment
%% following line to enable line numbers
%% \linenumbers
%% main text
%%
%% Use \section commands to start a section
\section{Example Section}
\label{sec1}
%% Labels are used to cross-reference an item using \ref command.
Section text. See Subsection \ref{subsec1}.
%% Use \subsection commands to start a subsection.
\subsection{Example Subsection}
\label{subsec1}
Subsection text.
%% Use \subsubsection, \paragraph, \subparagraph commands to
%% start 3rd, 4th and 5th level sections.
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Document_Structure#Sectioning_commands
\subsubsection{Mathematics}
%% Inline mathematics is tagged between $ symbols.
This is an example for the symbol $\alpha$ tagged as inline mathematics.
%% Displayed equations can be tagged using various environments.
%% Single line equations can be tagged using the equation environment.
\begin{equation}
f(x) = (x+a)(x+b)
\end{equation}
%% Unnumbered equations are tagged using starred versions of the environment.
%% amsmath package needs to be loaded for the starred version of equation environment.
\begin{equation*}
f(x) = (x+a)(x+b)
\end{equation*}
%% align or eqnarray environments can be used for multi line equations.
%% & is used to mark alignment points in equations.
%% \\ is used to end a row in a multiline equation.
\begin{align}
f(x) &= (x+a)(x+b) \\
&= x^2 + (a+b)x + ab
\end{align}
\begin{eqnarray}
f(x) &=& (x+a)(x+b) \nonumber\\ %% If equation numbering is not needed for a row use \nonumber.
&=& x^2 + (a+b)x + ab
\end{eqnarray}
%% Unnumbered versions of align and eqnarray
\begin{align*}
f(x) &= (x+a)(x+b) \\
&= x^2 + (a+b)x + ab
\end{align*}
\begin{eqnarray*}
f(x)&=& (x+a)(x+b) \\
&=& x^2 + (a+b)x + ab
\end{eqnarray*}
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Mathematics
%% https://en.wikibooks.org/wiki/LaTeX/Advanced_Mathematics
%% Use a table environment to create tables.
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Tables
\begin{table}[t]%% placement specifier
%% Use tabular environment to tag the tabular data.
%% https://en.wikibooks.org/wiki/LaTeX/Tables#The_tabular_environment
\centering%% For centre alignment of tabular.
\begin{tabular}{l c r}%% Table column specifiers
%% Tabular cells are separated by &
1 & 2 & 3 \\ %% A tabular row ends with \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{tabular}
%% Use \caption command for table caption and label.
\caption{Table Caption}\label{fig1}
\end{table}
%% Use figure environment to create figures
%% Refer following link for more details.
%% https://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions
\begin{figure}[t]%% placement specifier
%% Use \includegraphics command to insert graphic files. Place graphics files in
%% working directory.
\centering%% For centre alignment of image.
\includegraphics{example-image-a}
%% Use \caption command for figure caption and label.
\caption{Figure Caption}\label{fig1}
%% https://en.wikibooks.org/wiki/LaTeX/Importing_Graphics#Importing_external_graphics
\end{figure}
%% The Appendices part is started with the command \appendix;
%% appendix sections are then done as normal sections
\appendix
\section{Example Appendix Section}
\label{app1}
Appendix text.
%% For citations use:
%% \cite{<label>} ==> [1]
%%
Example citation, See \cite{lamport94}.
%% If you have bib database file and want bibtex to generate the
%% bibitems, please use
%%
%% \bibliographystyle{elsarticle-num}
%% \bibliography{<your bibdatabase>}
%% else use the following coding to input the bibitems directly in the
%% TeX file.
%% Refer following link for more details about bibliography and citations.
%% https://en.wikibooks.org/wiki/LaTeX/Bibliography_Management
\begin{thebibliography}{00}
%% For numbered reference style
%% \bibitem{label}
%% Text of bibliographic item
\bibitem{lamport94}
Leslie Lamport,
\textit{\LaTeX: a document preparation system},
Addison Wesley, Massachusetts,
2nd edition,
1994.
\end{thebibliography}
\end{document}
\endinput
%%
%% End of file `elsarticle-template-num.tex'.
%%
%% This file will generate fast loadable files and documentation
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
%% Copyright 2007-2024 Elsevier Ltd
%%
%% This file is part of the 'Elsarticle Bundle'.
%% ---------------------------------------------
%%
%% It may be distributed under the conditions of the LaTeX Project Public
%% License, either version 1.3 of this license or (at your option) any
%% later version. The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%%
%% The list of all files belonging to the 'Elsarticle Bundle' is
%% given in the file 'manifest.txt'.
%%
%% $Id: elsarticle.ins 251 2024-04-06 10:53:35Z rishi $
%%
%%
\input docstrip.tex
%%\keepsilent
\preamble
Copyright 2007-2024 Elsevier Ltd
This file is part of the 'Elsarticle Bundle'.
-------------------------------------------
It may be distributed under the conditions of the LaTeX Project Public
License, either version 1.3 of this license or (at your option) any
later version. The latest version of this license is in
http://www.latex-project.org/lppl.txt
and version 1.3 or later is part of all distributions of LaTeX
version 1999/12/01 or later.
The list of all files belonging to the 'Elsarticle Bundle' is
given in the file `manifest.txt'.
\endpreamble
\askforoverwritefalse
\generate{\file{elsarticle.cls}{\from{elsarticle.dtx}{class}}}
\obeyspaces
\Msg{*************************************************************}
\Msg{* *}
\Msg{* To finish the installation you have to move the following *}
\Msg{* file into a directory searched by TeX: *}
\Msg{* *}
\Msg{* elsarticle.cls *}
\Msg{* and *}
\Msg{* elsarticle-*.bst *}
\Msg{* *}
\Msg{* To produce the documentation go to the ../contrib folder *}
\Msg{* and run the file elsdoc.tex through pdfLaTeX *}
\Msg{* or use the Makefile which is far more easier. *}
\Msg{* *}
\Msg{* Happy TeXing! *}
\Msg{* *}
\Msg{*************************************************************}
\endbatchfile
% Copyright 2007-2024 Elsevier Ltd
%
% This file is part of the 'Elsarticle Bundle'.
% ---------------------------------------------
%
% It may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 1999/12/01 or later.
%
% The list of all files belonging to the LaTeX 'Elsarticle Bundle' is
% given in the file `manifest.txt'.
%
% CONTENTS OF THE ELSARTICLE BUNDLE
% ===============================
Directory elsarticle/
elsarticle.dtx
Main package with driver
elsarticle.ins
installer for elsarticle.dtx
elsarticle-harv.bst
bibliographic style for author-year citation
elsarticle-num.bst
bibliographic style for numbered citation
elsarticle-num-names.bst
bibliographic style for numbered citation + new natbib options
elsarticle-template-harv.tex
article template for a document with author-year citation
elsarticle-template-num.tex
article template for a document with numbered citation
changelog.txt
change log file
manifest.txt
this file
README
small readme documentation
Directory elsarticle/doc/
The following files are graphic files needed for creating pdf output
of the documentation from elsdoc.tex:
1pseperateaug.pdf
1psingleauthorgroup.pdf
elstest-1pdoubleblind.pdf
elstest-1p.pdf
elstest-3pd.pdf
elstest-3p.pdf
elstest-5p.pdf
jfigs.pdf
elsdoc.tex -- LaTeX source file of documentation
elsdoc.pdf -- documentation for elsarticle.cls
The following files are files written out every time elsdoc.tex is
compiled:
elsdoc.aux
elsdoc.log
elsdoc.out
tmp.tex
Auxiliary packages needed to generate pdf output from elsdoc.tex:
rvdtx.sty
pdfwidgets.sty
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="157.66139mm"
height="179.298mm"
viewBox="0 0 157.66139 179.298"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:export-filename="TempBayesian.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
inkscape:version="1.4.2 (f4327f4, 2025-05-13)"
sodipodi:docname="TempBayesian.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.68862935"
inkscape:cx="117.62496"
inkscape:cy="442.18272"
inkscape:window-width="1920"
inkscape:window-height="991"
inkscape:window-x="-9"
inkscape:window-y="-9"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs1"><rect
x="-181.7493"
y="824.54626"
width="61.609932"
height="30.804966"
id="rect4" /></defs><g
inkscape:label="Capa 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-25.197062,-62.597448)"><path
style="fill:none;stroke:#7b7b7b;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
d="M 38.22491,69.337025 V 221.87129 h 144.63355"
id="path1"
sodipodi:nodetypes="ccc" /><path
style="fill:none;stroke:#0d00a7;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
d="m 52,71.464423 3,41.111257 3,-49.948255 3,80.301425 3,-64.932732 3,34.195342 3,-29.968952 3,59.937902 3,-52.253555 3,29.968955 3,33.04269 3,-17.28978 3,54.94307 3,-48.41138 3,53.02199 3,-54.17464 3,58.40103 3,-64.54851 3,70.69599 3,-31.50582 3,21.51617 3,4.03428 3,-0.96054 3,-14.68763 3,15.45606 3,-8.58384 3,-2.09381 3,-1.22614 3,7.71414 3,-6.6558 3,7.18497 3,-8.96806 3,13.39698 3,-7.68435 3,7.30013 3,-0.80518 3,1.95783 3,-2.53763 3,-0.20252 3,0.29685 3,-0.43832"
id="path2"
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccc" /><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.76111px;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:none;stroke:#0d00a7;stroke-width:1.53095;stroke-dasharray:none;stroke-opacity:1"
x="48.832245"
y="231.34502"
id="text2"><tspan
sodipodi:role="line"
id="tspan2"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.76111px;font-family:Arial;-inkscape-font-specification:'Arial Bold';fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.53095"
x="48.832245"
y="231.34502">1</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.76111px;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:none;stroke:#0d00a7;stroke-width:1.53095;stroke-dasharray:none;stroke-opacity:1"
x="79.312355"
y="231.34502"
id="text2-5"><tspan
sodipodi:role="line"
id="tspan2-5"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.76111px;font-family:Arial;-inkscape-font-specification:'Arial Bold';fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.53095"
x="79.312355"
y="231.34502">10</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.76111px;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:none;stroke:#0d00a7;stroke-width:1.53095;stroke-dasharray:none;stroke-opacity:1"
x="110.55682"
y="231.34502"
id="text2-52"><tspan
sodipodi:role="line"
id="tspan2-7"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.76111px;font-family:Arial;-inkscape-font-specification:'Arial Bold';fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.53095"
x="110.55682"
y="231.34502">20</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.76111px;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:none;stroke:#0d00a7;stroke-width:1.53095;stroke-dasharray:none;stroke-opacity:1"
x="141.37074"
y="231.34502"
id="text2-3"><tspan
sodipodi:role="line"
id="tspan2-2"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.76111px;font-family:Arial;-inkscape-font-specification:'Arial Bold';fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.53095"
x="141.37074"
y="231.34502">30</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.76111px;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:none;stroke:#0d00a7;stroke-width:1.53095;stroke-dasharray:none;stroke-opacity:1"
x="172.60942"
y="231.34502"
id="text2-57"><tspan
sodipodi:role="line"
id="tspan2-6"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.76111px;font-family:Arial;-inkscape-font-specification:'Arial Bold';fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.53095"
x="172.60942"
y="231.34502">40</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.7611px;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="110.58114"
y="241.8045"
id="text3"><tspan
sodipodi:role="line"
id="tspan3"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold';stroke-width:1"
x="110.58114"
y="241.8045">Evaluations</tspan></text><text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.7611px;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Bold';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1;stroke-dasharray:none;stroke-opacity:1"
x="-145.94516"
y="30.847355"
id="text3-7"
transform="rotate(-90)"><tspan
sodipodi:role="line"
id="tspan3-9"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold';stroke-width:1"
x="-145.94516"
y="30.847355">RMSE</tspan></text><text
xml:space="preserve"
transform="scale(0.26458333)"
id="text4"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:26.6667px;font-family:Arial;-inkscape-font-specification:Arial;text-align:center;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect4);fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.77953;stroke-dasharray:none;stroke-opacity:1" /><path
style="fill:#000000;fill-opacity:1;stroke:#7b7b7b;stroke-width:1;stroke-dasharray:2,1;stroke-opacity:1;stroke-dashoffset:0"
d="M 79.371705,221.66342 V 67.976491"
id="path4" /></g></svg>
This source diff could not be displayed because it is too large. You can view the blob instead.
Time (s),Displacement H30 (mm),Displacement H45 (mm),Displacement H60 (mm)
0,0,0,0
0.0625,12,16,25
0.125,0,0,0
0.1875,-12,-16,-25
0.25,0,0,0
0.3125,12,16,25
0.375,0,0,0
0.4375,-12,-16,-25
0.5,0,0,0
0.5625,25,32,50
0.625,0,0,0
0.6875,-25,-32,-50
0.75,0,0,0
0.8125,25,32,50
0.875,0,0,0
0.9375,-25,-32,-50
1,0,0,0
1.0625,38,48,75
1.125,0,0,0
1.1875,-38,-48,-75
1.25,0,0,0
1.3125,38,48,75
1.375,0,0,0
1.4375,-38,-48,-75
1.5,0,0,0
1.5625,50,64,100
1.625,0,0,0
1.6875,-50,-64,-100
1.75,0,0,0
1.8125,50,64,100
1.875,0,0,0
1.9375,-50,-64,-100
2,0,0,0
"""
Plot the loading pattern displacement histories.
The script reads LoadPatterns.csv and saves a single-panel figure as PNG, SVG,
and PDF using the same visual format as the FEM validation plots.
"""
from pathlib import Path
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams.update(
{
"font.family": "serif",
"font.serif": ["Times New Roman", "DejaVu Serif"],
"mathtext.fontset": "stix",
"font.size": 11,
"axes.labelsize": 11,
"axes.titlesize": 11,
"xtick.labelsize": 11,
"ytick.labelsize": 11,
"axes.linewidth": 0.7,
"axes.spines.top": False,
"axes.spines.right": False,
"figure.dpi": 300,
"savefig.dpi": 300,
}
)
COLORS = ["#1a6faf", "#E07060", "#4D9A57"]
COLOR_GRID = "#d8d8d8"
X_LABEL = "Time (s)"
Y_LABEL = "Displacement (mm)"
SERIES_LABELS = [r"$F_1$ and $F_2$", r"$F_3$ and $F_4$", r"$F_5$"]
def load_loading_patterns(path):
data = np.genfromtxt(path, delimiter=",", skip_header=1)
if data.ndim != 2 or data.shape[1] != 4:
raise ValueError(f"{path.name} must contain four numeric columns.")
return data[:, 0], data[:, 1:]
def style_axis(ax):
ax.grid(True, color=COLOR_GRID, linewidth=0.55, alpha=0.75)
ax.tick_params(axis="both", which="major", direction="in", length=4, width=0.7)
ax.tick_params(axis="both", which="minor", direction="in", length=2.5, width=0.6)
ax.minorticks_on()
def save_figure_all_formats(fig, out_base):
fig.savefig(f"{out_base}.png", format="png", bbox_inches="tight", dpi=300)
fig.savefig(f"{out_base}.svg", format="svg", bbox_inches="tight")
fig.savefig(f"{out_base}.pdf", format="pdf", bbox_inches="tight")
def main():
base_dir = Path(__file__).resolve().parent
time, displacements = load_loading_patterns(base_dir / "LoadPatterns.csv")
fig, ax = plt.subplots(figsize=(5.2, 3.8))
fig.subplots_adjust(left=0.14, right=0.985, bottom=0.28, top=0.94)
for index, label in enumerate(SERIES_LABELS):
ax.plot(
time,
displacements[:, index],
color=COLORS[index],
linewidth=1.6,
label=label,
)
ax.axhline(0, color="black", linewidth=0.55, alpha=0.65)
ax.set_xlabel(X_LABEL)
ax.set_ylabel(Y_LABEL)
ax.set_xlim(time.min(), time.max())
style_axis(ax)
handles, labels = ax.get_legend_handles_labels()
fig.legend(
handles,
labels,
loc="lower center",
ncol=3,
frameon=False,
framealpha=0.95,
edgecolor="#cccccc",
bbox_to_anchor=(0.5, 0.055),
)
output_base = base_dir / "LoadPatterns"
save_figure_all_formats(fig, output_base)
plt.close(fig)
print(f"Saved: {output_base}.png/.svg/.pdf")
if __name__ == "__main__":
main()
This source diff could not be displayed because it is too large. You can view the blob instead.
model,variable_type,window_group,selected_outputs,lowest_rmse_outputs,median_training_time_sec
SVR,Distortion,2W,9,9,15.92
SVR,Distortion,3W,9,9,17.12
SVR,Distortion,5W,6,3,19.1
SVR,Distortion,Total,24,21,17.56
SVR,Damage,2W,15,15,20.4
SVR,Damage,3W,21,20,24.93
SVR,Damage,5W,11,15,25.96
SVR,Damage,Total,47,50,24.37
SVR,All,2W,24,24,18.14
SVR,All,3W,30,29,21.64
SVR,All,5W,17,18,22.52
SVR,All,Total,71,71,20.91
GPR,Distortion,2W,1,1,29.17
GPR,Distortion,3W,0,0,30.37
GPR,Distortion,5W,6,9,30.47
GPR,Distortion,Total,7,10,30.32
GPR,Damage,2W,0,0,34.18
GPR,Damage,3W,2,4,34.91
GPR,Damage,5W,6,3,35.78
GPR,Damage,Total,8,7,35.06
GPR,All,2W,1,1,32.85
GPR,All,3W,2,4,32.02
GPR,All,5W,12,12,34.04
GPR,All,Total,15,17,32.83
GBR,Distortion,2W,0,0,30.94
GBR,Distortion,3W,9,9,36.03
GBR,Distortion,5W,1,0,51.03
GBR,Distortion,Total,10,9,37.7
GBR,Damage,2W,0,0,36.02
GBR,Damage,3W,0,0,42.62
GBR,Damage,5W,0,0,61.34
GBR,Damage,Total,0,0,43.03
GBR,All,2W,0,0,34.28
GBR,All,3W,9,9,40.82
GBR,All,5W,1,0,55.23
GBR,All,Total,10,9,42.11
XGBoost,Distortion,2W,0,0,22.42
XGBoost,Distortion,3W,0,0,25.93
XGBoost,Distortion,5W,2,3,29.21
XGBoost,Distortion,Total,2,3,26.57
XGBoost,Damage,2W,0,0,28.14
XGBoost,Damage,3W,0,0,32.36
XGBoost,Damage,5W,0,0,33.27
XGBoost,Damage,Total,0,0,32.63
XGBoost,All,2W,0,0,24.87
XGBoost,All,3W,0,0,30.59
XGBoost,All,5W,2,3,32.19
XGBoost,All,Total,2,3,30.32
MLP,Distortion,2W,0,0,179.17
MLP,Distortion,3W,0,0,388.92
MLP,Distortion,5W,0,0,922.75
MLP,Distortion,Total,0,0,415.35
MLP,Damage,2W,0,0,286.51
MLP,Damage,3W,1,0,822.65
MLP,Damage,5W,1,0,1208.86
MLP,Damage,Total,2,0,851.3
MLP,All,2W,0,0,231.54
MLP,All,3W,1,0,532.12
MLP,All,5W,1,0,1072.55
MLP,All,Total,2,0,638.43
RF,Distortion,2W,0,0,35.56
RF,Distortion,3W,0,0,48.28
RF,Distortion,5W,0,0,61.79
RF,Distortion,Total,0,0,49.19
RF,Damage,2W,0,0,41.27
RF,Damage,3W,0,0,54.05
RF,Damage,5W,0,0,77.83
RF,Damage,Total,0,0,56.94
RF,All,2W,0,0,39.26
RF,All,3W,0,0,49.55
RF,All,5W,0,0,71.77
RF,All,Total,0,0,51.22
model,variable_type,selected_2W,lowest_rmse_2W,selected_3W,lowest_rmse_3W,selected_5W,lowest_rmse_5W,selected_Total,lowest_rmse_Total,median_training_time_sec
SVR,Distortion,9,9,9,9,6,3,24,21,17.56
SVR,Damage,15,15,21,20,11,15,47,50,24.37
SVR,All,24,24,30,29,17,18,71,71,20.91
GPR,Distortion,1,1,0,0,6,9,7,10,30.32
GPR,Damage,0,0,2,4,6,3,8,7,35.06
GPR,All,1,1,2,4,12,12,15,17,32.83
GBR,Distortion,0,0,9,9,1,0,10,9,37.7
GBR,Damage,0,0,0,0,0,0,0,0,43.03
GBR,All,0,0,9,9,1,0,10,9,42.11
XGBoost,Distortion,0,0,0,0,2,3,2,3,26.57
XGBoost,Damage,0,0,0,0,0,0,0,0,32.63
XGBoost,All,0,0,0,0,2,3,2,3,30.32
MLP,Distortion,0,0,0,0,0,0,0,0,415.35
MLP,Damage,0,0,1,0,1,0,2,0,851.3
MLP,All,0,0,1,0,1,0,2,0,638.43
RF,Distortion,0,0,0,0,0,0,0,0,49.19
RF,Damage,0,0,0,0,0,0,0,0,56.94
RF,All,0,0,0,0,0,0,0,0,51.22
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
family,height_cm,width_cm,surrogate,iteration,source_model,window,window_index,thickness_mm,objective_surrogate
H30_B29,30,29,RBF,1,opt1,tw1,1,12.34,0.0
H30_B29,30,29,RBF,1,opt1,tw2,2,14.34,0.0
H30_B29,30,29,RBF,2,opt2,tw1,1,12.68,0.0
H30_B29,30,29,RBF,2,opt2,tw2,2,14.91,0.0
H30_B29,30,29,RBF,3,opt3,tw1,1,12.56,0.0
H30_B29,30,29,RBF,3,opt3,tw2,2,14.79,0.0
H30_B29,30,29,Supervised ML,1,opt1,tw1,1,12.6,0.0
H30_B29,30,29,Supervised ML,1,opt1,tw2,2,14.64,0.0
H30_B29,30,29,Supervised ML,2,opt2,tw1,1,12.53,0.0
H30_B29,30,29,Supervised ML,2,opt2,tw2,2,14.75,0.0
H30_B34,30,34,RBF,1,opt1,tw1,1,15.5,507.37762
H30_B34,30,34,RBF,1,opt1,tw2,2,20.0,507.37762
H30_B34,30,34,RBF,2,opt2,tw1,1,14.8,700.7361
H30_B34,30,34,RBF,2,opt2,tw2,2,18.93,700.7361
H30_B34,30,34,RBF,3,opt3,tw1,1,14.77,688.53041
H30_B34,30,34,RBF,3,opt3,tw2,2,18.95,688.53041
H30_B34,30,34,Supervised ML,1,opt1,tw1,1,15.69,541.94744
H30_B34,30,34,Supervised ML,1,opt1,tw2,2,20.0,541.94744
H30_B34,30,34,Supervised ML,2,opt2,tw1,1,15.14,830.19116
H30_B34,30,34,Supervised ML,2,opt2,tw2,2,20.0,830.19116
H30_B34,30,34,Supervised ML,3,opt3,tw1,1,15.2,796.29365
H30_B34,30,34,Supervised ML,3,opt3,tw2,2,20.0,796.29365
H45_B29,45,29,RBF,1,opt1,tw1,1,5.94,0.0
H45_B29,45,29,RBF,1,opt1,tw2,2,8.38,0.0
H45_B29,45,29,RBF,1,opt1,tw3,3,9.28,0.0
H45_B29,45,29,RBF,2,opt2,tw1,1,5.69,0.0
H45_B29,45,29,RBF,2,opt2,tw2,2,7.97,0.0
H45_B29,45,29,RBF,2,opt2,tw3,3,9.02,0.0
H45_B29,45,29,RBF,3,opt3,tw1,1,5.81,0.0
H45_B29,45,29,RBF,3,opt3,tw2,2,7.88,0.0
H45_B29,45,29,RBF,3,opt3,tw3,3,8.98,0.0
H45_B29,45,29,Supervised ML,1,opt1,tw1,1,5.96,0.0
H45_B29,45,29,Supervised ML,1,opt1,tw2,2,8.23,0.0
H45_B29,45,29,Supervised ML,1,opt1,tw3,3,9.47,0.0
H45_B29,45,29,Supervised ML,2,opt2,tw1,1,5.7,0.0
H45_B29,45,29,Supervised ML,2,opt2,tw2,2,7.9,0.0
H45_B29,45,29,Supervised ML,2,opt2,tw3,3,9.02,0.0
H45_B29,45,29,Supervised ML,3,opt3,tw1,1,5.72,0.0
H45_B29,45,29,Supervised ML,3,opt3,tw2,2,7.87,0.0
H45_B29,45,29,Supervised ML,3,opt3,tw3,3,8.96,0.0
H45_B34,45,34,RBF,1,opt1,tw1,1,7.21,0.0
H45_B34,45,34,RBF,1,opt1,tw2,2,9.27,0.0
H45_B34,45,34,RBF,1,opt1,tw3,3,9.82,0.0
H45_B34,45,34,RBF,2,opt2,tw1,1,6.81,0.0
H45_B34,45,34,RBF,2,opt2,tw2,2,9.02,0.0
H45_B34,45,34,RBF,2,opt2,tw3,3,9.65,0.0
H45_B34,45,34,Supervised ML,1,opt1,tw1,1,7.34,0.0
H45_B34,45,34,Supervised ML,1,opt1,tw2,2,9.28,0.0
H45_B34,45,34,Supervised ML,1,opt1,tw3,3,10.13,0.0
H45_B34,45,34,Supervised ML,2,opt2,tw1,1,6.87,0.0
H45_B34,45,34,Supervised ML,2,opt2,tw2,2,9.08,0.0
H45_B34,45,34,Supervised ML,2,opt2,tw3,3,9.86,0.0
H45_B34,45,34,Supervised ML,3,opt3,tw1,1,6.84,0.0
H45_B34,45,34,Supervised ML,3,opt3,tw2,2,9.05,0.0
H45_B34,45,34,Supervised ML,3,opt3,tw3,3,9.73,0.0
H60_B34,60,34,RBF,1,opt1,tw1,1,5.98,15.02082
H60_B34,60,34,RBF,1,opt1,tw2,2,7.29,15.02082
H60_B34,60,34,RBF,1,opt1,tw3,3,8.53,15.02082
H60_B34,60,34,RBF,1,opt1,tw4,4,6.73,15.02082
H60_B34,60,34,RBF,1,opt1,tw5,5,5.0,15.02082
H60_B34,60,34,RBF,2,opt2,tw1,1,5.71,16.67562
H60_B34,60,34,RBF,2,opt2,tw2,2,7.44,16.67562
H60_B34,60,34,RBF,2,opt2,tw3,3,8.51,16.67562
H60_B34,60,34,RBF,2,opt2,tw4,4,6.15,16.67562
H60_B34,60,34,RBF,2,opt2,tw5,5,5.0,16.67562
H60_B34,60,34,RBF,3,opt3,tw1,1,5.77,17.74124
H60_B34,60,34,RBF,3,opt3,tw2,2,7.38,17.74124
H60_B34,60,34,RBF,3,opt3,tw3,3,8.37,17.74124
H60_B34,60,34,RBF,3,opt3,tw4,4,6.18,17.74124
H60_B34,60,34,RBF,3,opt3,tw5,5,5.0,17.74124
H60_B34,60,34,Supervised ML,1,opt1,tw1,1,5.97,10.58275
H60_B34,60,34,Supervised ML,1,opt1,tw2,2,7.38,10.58275
H60_B34,60,34,Supervised ML,1,opt1,tw3,3,8.56,10.58275
H60_B34,60,34,Supervised ML,1,opt1,tw4,4,6.7,10.58275
H60_B34,60,34,Supervised ML,1,opt1,tw5,5,5.0,10.58275
H60_B34,60,34,Supervised ML,2,opt2,tw1,1,5.76,16.96082
H60_B34,60,34,Supervised ML,2,opt2,tw2,2,7.37,16.96082
H60_B34,60,34,Supervised ML,2,opt2,tw3,3,8.46,16.96082
H60_B34,60,34,Supervised ML,2,opt2,tw4,4,6.67,16.96082
H60_B34,60,34,Supervised ML,2,opt2,tw5,5,5.0,16.96082
H60_B34,60,34,Supervised ML,3,opt3,tw1,1,5.74,16.90444
H60_B34,60,34,Supervised ML,3,opt3,tw2,2,7.46,16.90444
H60_B34,60,34,Supervised ML,3,opt3,tw3,3,8.5,16.90444
H60_B34,60,34,Supervised ML,3,opt3,tw4,4,6.37,16.90444
H60_B34,60,34,Supervised ML,3,opt3,tw5,5,5.0,16.90444
#!/usr/bin/env python3
"""Plot optimized window thickness evolution in a single combined figure.
Input CSV expected columns:
family, surrogate, iteration, window, window_index, thickness_mm
The plot groups the x-axis by geometry family and shows adaptive iterations
inside each family block. Window color identifies each thickness variable, and
line style identifies the surrogate strategy:
solid = RBF, dashed = Supervised ML.
"""
from __future__ import annotations
import csv
from pathlib import Path
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
plt.rcParams.update(
{
"font.family": "serif",
"font.serif": ["Times New Roman", "DejaVu Serif"],
"mathtext.fontset": "stix",
"font.size": 12,
"axes.labelsize": 12,
"axes.titlesize": 11,
"xtick.labelsize": 12,
"ytick.labelsize": 12,
"axes.linewidth": 0.7,
"axes.spines.top": False,
"axes.spines.right": False,
"figure.dpi": 300,
"savefig.dpi": 300,
}
)
BASE_DIR = Path(__file__).resolve().parent
INPUT_CSV = BASE_DIR / "optimized_window_thickness_evolution.csv"
FIG_PATH = BASE_DIR / "optimized_window_thickness_evolution"
SURROGATE_LINESTYLES = {
"RBF": "-",
"Supervised ML": "--",
}
SURROGATE_ORDER = ["RBF", "Supervised ML"]
WINDOW_COLORS = {
"tw1": "#1a6faf",
"tw2": "#E07060",
"tw3": "#4D9A57",
"tw4": "#8B6BBE",
"tw5": "#D49A2A",
}
FAMILY_LABELS = {
"H30_B29": r"$F_1$",
"H30_B34": r"$F_2$",
"H45_B29": r"$F_3$",
"H45_B34": r"$F_4$",
"H60_B34": r"$F_5$",
}
COLOR_GRID = "#d8d8d8"
ITERATION_STEP = 0.78
FAMILY_GAP = 1.05
def load_rows(path: Path):
with path.open(newline="", encoding="utf-8") as f:
reader = csv.DictReader(f)
rows = []
for row in reader:
row["iteration"] = int(row["iteration"])
row["window_index"] = int(row["window_index"])
row["thickness_mm"] = float(row["thickness_mm"])
rows.append(row)
return rows
def style_axis(ax, *, include_x_grid: bool = False) -> None:
ax.grid(
True,
axis="both" if include_x_grid else "y",
color=COLOR_GRID,
linewidth=0.55,
alpha=0.75,
)
ax.tick_params(axis="both", which="major", direction="in", length=4, width=0.7)
ax.tick_params(axis="both", which="minor", direction="in", length=2.5, width=0.6)
ax.tick_params(axis="x", which="both", length=0)
ax.minorticks_on()
def save_figure_all_formats(fig, out_base: Path) -> None:
fig.savefig(f"{out_base}.png", format="png", bbox_inches="tight", dpi=300)
fig.savefig(f"{out_base}.svg", format="svg", bbox_inches="tight")
fig.savefig(f"{out_base}.pdf", format="pdf", bbox_inches="tight")
def family_sort_key(family: str) -> tuple[int, int, str]:
height_text, width_text = family.split("_")
return int(height_text.replace("H", "")), int(width_text.replace("B", "")), family
def window_sort_key(window: str) -> int:
return int(window.replace("tw", ""))
def plot_all_families(rows: list[dict], out_base: Path):
rows = sorted(
rows,
key=lambda r: (
family_sort_key(r["family"]),
r["window_index"],
SURROGATE_ORDER.index(r["surrogate"])
if r["surrogate"] in SURROGATE_ORDER
else len(SURROGATE_ORDER),
r["iteration"],
),
)
families = sorted({r["family"] for r in rows}, key=family_sort_key)
windows = sorted({r["window"] for r in rows}, key=window_sort_key)
surrogates = [s for s in SURROGATE_ORDER if s in {r["surrogate"] for r in rows}]
fig, ax = plt.subplots(figsize=(10.2, 4.85))
fig.subplots_adjust(left=0.075, right=0.985, bottom=0.3, top=0.95)
family_centers = {}
tick_positions = []
tick_labels = []
family_start_positions = []
x_by_family_iteration = {}
current_x = 0.0
for family in families:
iterations = sorted({r["iteration"] for r in rows if r["family"] == family})
family_start_positions.append(current_x)
family_positions = []
for offset, iteration in enumerate(iterations):
x = current_x + offset * ITERATION_STEP
x_by_family_iteration[(family, iteration)] = x
family_positions.append(x)
tick_positions.append(x)
tick_labels.append(f"it{iteration}")
family_centers[family] = (family_positions[0] + family_positions[-1]) / 2
current_x = family_positions[-1] + FAMILY_GAP
for family_start in family_start_positions[1:]:
ax.axvline(
family_start - FAMILY_GAP / 2,
color=COLOR_GRID,
linewidth=0.7,
zorder=0,
)
for family in families:
family_rows = [r for r in rows if r["family"] == family]
for window in sorted({r["window"] for r in family_rows}, key=window_sort_key):
for surrogate in surrogates:
subset = [
r
for r in family_rows
if r["window"] == window and r["surrogate"] == surrogate
]
if not subset:
continue
subset = sorted(subset, key=lambda r: r["iteration"])
ax.plot(
[x_by_family_iteration[(family, r["iteration"])] for r in subset],
[r["thickness_mm"] for r in subset],
marker="o",
color=WINDOW_COLORS.get(window, "#555555"),
markerfacecolor="white",
markeredgewidth=0.8,
linewidth=1.5,
markersize=4.2,
linestyle=SURROGATE_LINESTYLES.get(surrogate, "-"),
zorder=3,
)
ax.set_ylabel("Window thickness [mm]")
ax.set_xticks(tick_positions)
ax.set_xticklabels(tick_labels)
ax.tick_params(axis="x", labelsize=10, pad=3)
ax.set_xlim(min(tick_positions) - 0.35, max(tick_positions) + 0.35)
style_axis(ax)
y_values = [r["thickness_mm"] for r in rows]
y_margin = (max(y_values) - min(y_values)) * 0.06
ax.set_ylim(max(0, min(y_values) - y_margin), max(y_values) + y_margin)
for family, center in family_centers.items():
ax.text(
center,
-0.115,
FAMILY_LABELS.get(family, family),
transform=ax.get_xaxis_transform(),
ha="center",
va="top",
fontsize=12,
clip_on=False,
)
window_handles = [
Line2D(
[0],
[0],
color=WINDOW_COLORS.get(window, "#555555"),
marker="o",
markerfacecolor="white",
markeredgewidth=0.8,
linewidth=1.5,
markersize=4.2,
label=window,
)
for window in windows
]
surrogate_handles = [
Line2D(
[0],
[0],
color="#444444",
linestyle=SURROGATE_LINESTYLES.get(surrogate, "-"),
linewidth=1.5,
label=surrogate,
)
for surrogate in surrogates
]
fig.legend(
window_handles + surrogate_handles,
[h.get_label() for h in window_handles + surrogate_handles],
loc="lower center",
ncol=len(window_handles) + len(surrogate_handles),
frameon=False,
bbox_to_anchor=(0.5, 0.035),
columnspacing=1.4,
handlelength=2.0,
)
save_figure_all_formats(fig, out_base)
plt.close(fig)
return out_base
def main():
rows = load_rows(INPUT_CSV)
created = plot_all_families(rows, FIG_PATH)
print(f"Saved: {created}.png/.svg/.pdf")
if __name__ == "__main__":
main()
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
"""
Plot FEM validation curves against experimental measurements.
The script reads the hysteresis and cumulative dissipated energy curves stored
in this folder and saves a two-panel figure as PNG, SVG, and PDF.
"""
from pathlib import Path
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams.update(
{
"font.family": "serif",
"font.serif": ["Times New Roman", "DejaVu Serif"],
"mathtext.fontset": "stix",
"font.size": 11,
"axes.labelsize": 11,
"axes.titlesize": 11,
"xtick.labelsize": 11,
"ytick.labelsize": 11,
"axes.linewidth": 0.7,
"axes.spines.top": False,
"axes.spines.right": False,
"figure.dpi": 300,
"savefig.dpi": 300,
}
)
COLOR_EXPERIMENTAL = "#1a6faf"
COLOR_NUMERICAL = "#E07060"
COLOR_GRID = "#d8d8d8"
ENERGY_X_LABEL = "Cumulative displacement path (mm)"
ENERGY_Y_LABEL = "Cumulative dissipated energy (kN m)"
HYSTERESIS_X_LABEL = "Displacement (mm)"
HYSTERESIS_Y_LABEL = "Force (kN)"
def load_curve(path):
data = np.loadtxt(path)
if data.ndim != 2 or data.shape[1] < 2:
raise ValueError(f"{path.name} must contain at least two numeric columns.")
return data[:, 0], data[:, 1]
def style_axis(ax):
ax.grid(True, color=COLOR_GRID, linewidth=0.55, alpha=0.75)
ax.tick_params(axis="both", which="major", direction="in", length=4, width=0.7)
ax.tick_params(axis="both", which="minor", direction="in", length=2.5, width=0.6)
ax.minorticks_on()
def save_figure_all_formats(fig, out_base):
fig.savefig(f"{out_base}.png", format="png", bbox_inches="tight", dpi=300)
fig.savefig(f"{out_base}.svg", format="svg", bbox_inches="tight")
fig.savefig(f"{out_base}.pdf", format="pdf", bbox_inches="tight")
def main():
base_dir = Path(__file__).resolve().parent
hysteresis_exp = load_curve(base_dir / "histeresis_1_exp.txt")
hysteresis_num = load_curve(base_dir / "histeresis_2_num.txt")
energy_exp = load_curve(base_dir / "energy_1_exp.txt")
energy_num = load_curve(base_dir / "energy_2_num.txt")
fig, axes = plt.subplots(1, 2, figsize=(8.25, 3.8))
fig.subplots_adjust(left=0.085, right=0.985, bottom=0.28, top=0.86, wspace=0.30)
ax_hysteresis, ax_energy = axes
ax_hysteresis.plot(
*hysteresis_exp,
color=COLOR_EXPERIMENTAL,
linewidth=1.4,
label="Experimental",
)
ax_hysteresis.plot(
*hysteresis_num,
color=COLOR_NUMERICAL,
linewidth=1.4,
linestyle="--",
label="Numerical",
)
ax_hysteresis.axhline(0, color="black", linewidth=0.55, alpha=0.65)
ax_hysteresis.axvline(0, color="black", linewidth=0.55, alpha=0.65)
ax_hysteresis.set_xlabel(HYSTERESIS_X_LABEL)
ax_hysteresis.set_ylabel(HYSTERESIS_Y_LABEL)
style_axis(ax_hysteresis)
handles, labels = ax_hysteresis.get_legend_handles_labels()
fig.legend(
handles,
labels,
loc="lower center",
ncol=2,
frameon=False,
framealpha=0.95,
edgecolor="#cccccc",
bbox_to_anchor=(0.5, 0.055),
)
ax_energy.plot(
*energy_exp,
color=COLOR_EXPERIMENTAL,
linewidth=1.8,
label="Experimental",
)
ax_energy.plot(
*energy_num,
color=COLOR_NUMERICAL,
linewidth=1.8,
linestyle="--",
label="Numerical",
)
ax_energy.set_xlabel(ENERGY_X_LABEL)
ax_energy.set_ylabel(ENERGY_Y_LABEL)
style_axis(ax_energy)
output_base = base_dir / "FEM_validation_comparison"
save_figure_all_formats(fig, output_base)
plt.close(fig)
print(f"Saved: {output_base}.png/.svg/.pdf")
if __name__ == "__main__":
main()
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment