mirror of
https://github.com/AlessandroAcuna/Home.git
synced 2025-12-18 22:22:53 +00:00
1792 lines
104 KiB
HTML
1792 lines
104 KiB
HTML
<!doctype html>
|
||
<html lang="it" data-theme="dark">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
<title>Alessandro Acuna - Structural Engineer</title>
|
||
<meta name="description" content="Portfolio & CV of Alessandro Acuna, Structural Engineer specialized in composites, CAD, and FEA." />
|
||
|
||
<!-- Canonical + Social -->
|
||
<link rel="canonical" href="https://yourdomain.tld/">
|
||
<meta property="og:title" content="Alessandro Acuna - Structural Engineer" />
|
||
<meta property="og:description" content="Portfolio & CV of Alessandro Acuna, Structural Engineer specialized in composites, CAD, and FEA." />
|
||
<meta property="og:type" content="website" />
|
||
<meta property="og:image" content="https://yourdomain.tld/res/og-cover.jpg" />
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
|
||
<meta name="theme-color" content="#0b0c10" />
|
||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='0.9em' font-size='90'>A</text></svg>">
|
||
<!-- Preload CV (opzionale) -->
|
||
<link rel="preload" as="fetch" href="res/Alessandro_Acuna_CV.pdf" type="application/pdf" crossorigin>
|
||
|
||
<style>
|
||
/* --- THEME TOKENS --- */
|
||
:root{
|
||
--bg:#0b0c10; --surface:#0f1116; --text:#e5e7eb; --muted:#94a3b8; --primary:#0ea5e9; --ring:#22d3ee; --card:#111318; --border:#1f2937; --chip:#111827; --chip-text:#cbd5e1;
|
||
}
|
||
[data-theme="dark"]{
|
||
--bg:#0b0c10; --surface:#0f1116; --text:#e5e7eb; --muted:#94a3b8; --primary:#0ea5e9; --ring:#22d3ee; --card:#111318; --border:#1f2937; --chip:#111827; --chip-text:#cbd5e1;
|
||
}
|
||
[data-theme="light"]{
|
||
--bg:#f8fafc; --surface:#ffffff; --text:#0f172a; --muted:#475569; --primary:#0284c7; --ring:#22d3ee; --card:#ffffff; --border:#e2e8f0; --chip:#f1f5f9; --chip-text:#0f172a;
|
||
}
|
||
|
||
/* --- BASE --- */
|
||
*{box-sizing:border-box}
|
||
html{scroll-behavior:smooth}
|
||
body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,"Helvetica Neue",Arial,"Apple Color Emoji","Segoe UI Emoji";background:var(--bg);color:var(--text);}
|
||
a{color:var(--primary);text-decoration:none}
|
||
a:hover{text-decoration:underline}
|
||
.container{max-width:1000px;margin:0 auto;padding:24px}
|
||
|
||
/* --- LAYOUT / CARDS / DIVIDERS --- */
|
||
header{position:sticky;top:0;z-index:50;background:color-mix(in oklab, var(--surface) 80%, transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}
|
||
nav{display:flex;align-items:center;gap:16px;justify-content:space-between}
|
||
nav .links{display:flex;gap:12px;flex-wrap:wrap}
|
||
nav a{padding:10px 12px;border-radius:10px}
|
||
nav a:hover{background:var(--chip)}
|
||
|
||
.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);padding:10px 14px;border-radius:12px;background:linear-gradient(180deg,var(--surface),var(--card));color:var(--text);box-shadow:0 1px 0 rgba(255,255,255,0.04) inset, 0 8px 24px rgba(2,8,23,0.25); cursor:pointer;}
|
||
.btn:hover{transform:translateY(-1px)}
|
||
.btn.primary{border-color:transparent;background:linear-gradient(180deg,rgba(14,165,233,0.15),rgba(14,165,233,0.05));}
|
||
|
||
.grid{display:grid;gap:16px}
|
||
.hero{display:grid;grid-template-columns:1.4fr 1fr;gap:24px;align-items:center;padding:40px 0}
|
||
.section{padding:16px 0 32px}
|
||
|
||
.card{border:1px solid var(--border);background:var(--card);border-radius:16px;padding:20px; box-shadow:0 1px 0 rgba(255,255,255,0.03) inset, 0 10px 24px rgba(2,8,23,0.15)}
|
||
.timeline{display:grid;gap:14px}
|
||
.item{display:grid;grid-template-columns:180px 1fr;gap:14px}
|
||
.item + .item{border-top:1px solid var(--border); padding-top:14px; margin-top:6px}
|
||
|
||
h1{font-size:clamp(28px,4vw,44px);line-height:1.1;margin:0 0 8px 0}
|
||
h2{font-size:clamp(22px,3vw,30px);margin:24px 0 12px}
|
||
h3{font-size:18px;margin:0 0 6px}
|
||
p{color:var(--muted);margin:8px 0}
|
||
|
||
.chips{display:flex;flex-wrap:wrap;gap:8px}
|
||
.chip{background:var(--chip);color:var(--chip-text);padding:6px 10px;border-radius:999px;font-size:12px;border:1px solid var(--border)}
|
||
|
||
.project{border-left:3px solid var(--primary);padding-left:12px}
|
||
.kbd{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;background:var(--chip);border:1px solid var(--border);padding:2px 6px;border-radius:6px;font-size:12px}
|
||
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
|
||
|
||
/* --- TITOLI (titolo sopra, where sotto) --- */
|
||
.brand{
|
||
display:flex;
|
||
flex-direction:column;
|
||
align-items:flex-start;
|
||
gap:2px;
|
||
line-height:1.25;
|
||
}
|
||
.brand .where{ font-weight:500; opacity:.85; }
|
||
|
||
/* --- LOGHI --- */
|
||
.when{display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;text-align:center;min-height:60px}
|
||
.logo-box{width:160px;height:60px;display:grid;place-items:center;background:transparent;border:1px solid transparent;border-radius:10px; aspect-ratio:160/60;}
|
||
.logo{display:block;height:auto;max-height:48px;max-width:100%;object-fit:contain;image-rendering:auto;opacity:.98}
|
||
.logo--wide{max-height:44px}
|
||
.logo--square{max-height:52px}
|
||
|
||
/* --- LISTE --- */
|
||
.timeline .item ul{ margin:8px 0 0 0; padding-left:18px; list-style-position:outside; }
|
||
.timeline .item li{ margin:4px 0; }
|
||
|
||
@media(max-width:860px){
|
||
.hero{grid-template-columns:1fr}
|
||
.item{grid-template-columns:1fr}
|
||
}
|
||
|
||
.footer{padding:24px 0;color:var(--muted);font-size:14px;border-top:1px solid var(--border)}
|
||
|
||
/* =======================
|
||
MODAL (dialog)
|
||
======================= */
|
||
dialog.project-modal {
|
||
width:min(900px, 92vw);
|
||
border:1px solid var(--border);
|
||
border-radius:16px;
|
||
padding:0;
|
||
background:var(--surface);
|
||
color:var(--text);
|
||
box-shadow:0 25px 60px rgba(0,0,0,.45);
|
||
}
|
||
dialog.project-modal::backdrop{
|
||
background:rgba(2,8,23,.55);
|
||
backdrop-filter:blur(3px);
|
||
}
|
||
.modal-header{
|
||
display:flex;justify-content:space-between;align-items:center;
|
||
padding:16px 18px;border-bottom:1px solid var(--border);background:var(--card);
|
||
}
|
||
.modal-title{font-size:18px;margin:0}
|
||
.modal-body{padding:18px;display:grid;gap:14px;max-height:70vh;overflow:auto}
|
||
.modal-actions{
|
||
display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--border);background:var(--card)
|
||
}
|
||
.modal-close{cursor:pointer}
|
||
.modal-close:hover{opacity:.85}
|
||
|
||
.modal-gallery{
|
||
display:grid;gap:10px;
|
||
grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
|
||
}
|
||
.modal-gallery img{
|
||
width:100%;height:180px;object-fit:cover;border-radius:10px;border:1px solid var(--border);cursor:zoom-in;
|
||
}
|
||
|
||
/* Progetti cliccabili */
|
||
.project[data-modal]{cursor:pointer;transition:transform .12s ease;}
|
||
.project[data-modal]:hover{ transform:translateY(-2px); }
|
||
|
||
/* ===== CUSTOM LANGUAGE DROPDOWN ===== */
|
||
.lang-switcher{ position:relative; display:inline-flex; }
|
||
.lang-btn{
|
||
display:inline-flex; align-items:center; gap:8px;
|
||
padding:8px 10px; border:1px solid var(--border); border-radius:12px;
|
||
background:var(--card); cursor:pointer; user-select:none;
|
||
}
|
||
.lang-flag{ font-size:18px; line-height:1; }
|
||
.lang-code{ font-weight:600; letter-spacing:.4px; }
|
||
.lang-caret{ font-size:14px; opacity:.8; }
|
||
|
||
.lang-menu{
|
||
position:absolute; top:calc(100% + 8px); right:0; z-index:100;
|
||
min-width:180px; background:var(--surface); border:1px solid var(--border); border-radius:12px;
|
||
box-shadow:0 12px 32px rgba(0,0,0,.3); padding:6px; display:none;
|
||
}
|
||
.lang-menu.open{ display:block; }
|
||
.lang-option{
|
||
display:flex; align-items:center; gap:10px; padding:10px; border-radius:10px; cursor:pointer;
|
||
}
|
||
.lang-option:hover, .lang-option[aria-selected="true"]{ background:var(--chip); }
|
||
.lang-name{ flex:1; }
|
||
.lang-short{ opacity:.65; font-size:12px; }
|
||
.lang-check{ opacity:0; }
|
||
.lang-option[aria-selected="true"] .lang-check{ opacity:1; }
|
||
|
||
/* ===== LIGHTBOX ===== */
|
||
dialog#lightbox{
|
||
padding:0; border:none; background:transparent; max-width:96vw;
|
||
}
|
||
dialog#lightbox::backdrop{
|
||
background:rgba(0,0,0,.85);
|
||
backdrop-filter: blur(2px);
|
||
}
|
||
.lightbox-wrap{
|
||
position:relative; display:flex; align-items:center; justify-content:center; padding:12px;
|
||
}
|
||
.lightbox-figure{
|
||
margin:0; background:var(--surface); border:1px solid var(--border); border-radius:12px;
|
||
max-width:96vw; max-height:90vh; display:flex; flex-direction:column; overflow:hidden;
|
||
box-shadow:0 30px 80px rgba(0,0,0,.6);
|
||
}
|
||
.lightbox-img{
|
||
max-width:96vw; max-height:80vh; width:auto; height:auto; display:block; object-fit:contain;
|
||
background:#000;
|
||
}
|
||
.lightbox-caption{
|
||
padding:10px 12px; font-size:14px; color:var(--muted); background:var(--card); border-top:1px solid var(--border);
|
||
}
|
||
.lightbox-close{
|
||
position:absolute; top:8px; right:8px; z-index:2;
|
||
}
|
||
|
||
/* A11y */
|
||
:focus-visible{ outline:2px solid var(--ring); outline-offset:2px; border-radius:8px; }
|
||
:target{ scroll-margin-top: 90px; }
|
||
@media (prefers-reduced-motion: reduce){
|
||
*{transition-duration:0.001ms !important; animation-duration:0.001ms !important; animation-iteration-count:1 !important;}
|
||
}
|
||
</style>
|
||
|
||
<!-- Tema: toggle visibile, persistenza -->
|
||
<script>
|
||
(function(){
|
||
const KEY='aa-theme';
|
||
const metaTheme = document.querySelector('meta[name="theme-color"]');
|
||
const apply = (t)=>{
|
||
const theme = (t==='light') ? 'light' : 'dark';
|
||
document.documentElement.setAttribute('data-theme', theme);
|
||
if(metaTheme) metaTheme.setAttribute('content', theme==='light' ? '#ffffff' : '#0b0c10');
|
||
// Aggiorna lo stato ARIA del toggle
|
||
const btn = document.getElementById('themeToggle');
|
||
if(btn){
|
||
const isDark = theme==='dark';
|
||
btn.textContent = isDark ? '☀️' : '🌙';
|
||
btn.title = isDark ? 'Passa a tema chiaro' : 'Passa a tema scuro';
|
||
btn.setAttribute('aria-pressed', isDark ? 'false' : 'true');
|
||
}
|
||
};
|
||
const saved = localStorage.getItem(KEY);
|
||
const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||
apply(saved || (prefersDark ? 'dark' : 'dark'));
|
||
|
||
window.addEventListener('DOMContentLoaded', ()=>{
|
||
const btn = document.getElementById('themeToggle');
|
||
const setIcon = ()=>{
|
||
const cur = document.documentElement.getAttribute('data-theme') || 'dark';
|
||
btn.textContent = (cur==='dark') ? '☀️' : '🌙';
|
||
btn.title = (cur==='dark') ? 'Passa a tema chiaro' : 'Passa a tema scuro';
|
||
btn.setAttribute('aria-pressed', cur==='dark' ? 'false' : 'true');
|
||
};
|
||
setIcon();
|
||
btn.addEventListener('click', ()=>{
|
||
const cur = document.documentElement.getAttribute('data-theme') || 'dark';
|
||
const next = (cur==='dark') ? 'light' : 'dark';
|
||
apply(next);
|
||
localStorage.setItem(KEY, next);
|
||
setIcon();
|
||
});
|
||
});
|
||
})();
|
||
</script>
|
||
|
||
<!-- JSON-LD base (sostituisci yourdomain.tld e l'immagine OG) -->
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "Person",
|
||
"name": "Alessandro Acuna",
|
||
"jobTitle": "Structural Engineer",
|
||
"email": "mailto:alessan.acunaguardia@gmail.com",
|
||
"telephone": "+393277671048",
|
||
"url": "https://yourdomain.tld/",
|
||
"image": "https://yourdomain.tld/res/og-cover.jpg",
|
||
"sameAs": ["https://www.linkedin.com/in/aleacuna"],
|
||
"knowsAbout": ["Composite Materials","FEA","CAD","Aerospace","Python"],
|
||
"address": {
|
||
"@type": "PostalAddress",
|
||
"addressLocality": "Madrid",
|
||
"addressCountry": "ES"
|
||
}
|
||
}
|
||
</script>
|
||
</head>
|
||
<body>
|
||
<header>
|
||
<div class="container">
|
||
<nav>
|
||
<div class="links" aria-label="Navigation">
|
||
<a href="#about" data-i18n="nav.about">About</a>
|
||
<a href="#experience" data-i18n="nav.experience">Experience</a>
|
||
<a href="#projects" data-i18n="nav.projects">Projects</a>
|
||
<a href="#education" data-i18n="nav.education">Education</a>
|
||
<a href="#skills" data-i18n="nav.skills">Skills</a>
|
||
<a href="#contact" data-i18n="nav.contact">Contact</a>
|
||
</div>
|
||
|
||
<!-- Language dropdown + Theme + CV -->
|
||
<div class="links">
|
||
<div class="lang-switcher" id="langSwitcher">
|
||
<button class="lang-btn" id="langBtn" aria-haspopup="listbox" aria-expanded="false" aria-controls="langMenu" title="Language">
|
||
<span class="lang-flag" id="langFlag">🇮🇹</span>
|
||
<span class="lang-code" id="langCode">IT</span>
|
||
<span class="lang-caret">▾</span>
|
||
</button>
|
||
<div class="lang-menu" id="langMenu" role="listbox" tabindex="-1">
|
||
<div class="lang-option" role="option" data-lang="it" aria-selected="true" tabindex="0">
|
||
<span class="lang-flag">🇮🇹</span><span class="lang-name">Italiano</span><span class="lang-short">IT</span><span class="lang-check">✓</span>
|
||
</div>
|
||
<div class="lang-option" role="option" data-lang="en" aria-selected="false" tabindex="0">
|
||
<span class="lang-flag">🇬🇧</span><span class="lang-name">English</span><span class="lang-short">EN</span><span class="lang-check">✓</span>
|
||
</div>
|
||
<div class="lang-option" role="option" data-lang="de" aria-selected="false" tabindex="0">
|
||
<span class="lang-flag">🇩🇪</span><span class="lang-name">Deutsch</span><span class="lang-short">DE</span><span class="lang-check">✓</span>
|
||
</div>
|
||
<div class="lang-option" role="option" data-lang="es" aria-selected="false" tabindex="0">
|
||
<span class="lang-flag">🇪🇸</span><span class="lang-name">Español</span><span class="lang-short">ES</span><span class="lang-check">✓</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<button id="themeToggle" class="btn" aria-label="Toggle theme" aria-pressed="false" title="Light/Dark">🌓</button>
|
||
<a class="btn primary" href="res/Alessandro_Acuna_CV.pdf" download data-i18n="cta.downloadCv" data-i18n-attr="title" title="Scarica il CV">⬇️ Scarica CV</a>
|
||
</div>
|
||
</nav>
|
||
</div>
|
||
</header>
|
||
|
||
<main class="container">
|
||
<!-- HERO -->
|
||
<section class="hero" id="about">
|
||
<div class="card">
|
||
<h1>Alessandro Acuna</h1>
|
||
<h2 style="margin:0 0 10px 0" data-i18n="hero.role">Structural Engineer</h2>
|
||
<p data-i18n="hero.blurb">
|
||
Mechanical Engineer passionate about aerospace and advanced manufacturing, specialized in developing structural components from concept to advanced FEM validation. Focus on composite materials, CAD, FEA, and explicit simulations.
|
||
</p>
|
||
<div class="chips" aria-label="Highlights">
|
||
<span class="chip">Composite Materials</span>
|
||
<span class="chip">FEA (Abaqus, Ansys, Nastran, Hypermesh)</span>
|
||
<span class="chip">CAD (CATIA V5, NX, Creo)</span>
|
||
<span class="chip">PASS and SAP</span>
|
||
<span class="chip">Python (Numpy, Pandas, Matplotlib)</span>
|
||
</div>
|
||
<div style="margin-top:16px; display:flex; gap:10px; flex-wrap:wrap">
|
||
<a class="btn" href="mailto:alessan.acunaguardia@gmail.com">📧 Email</a>
|
||
<a class="btn" href="tel:+393277671048">📱 +393277671048</a>
|
||
<a class="btn" href="https://www.linkedin.com/in/aleacuna" target="_blank" rel="noopener noreferrer">💼 LinkedIn</a>
|
||
</div>
|
||
</div>
|
||
<div class="grid">
|
||
<div class="card">
|
||
<h3 data-i18n="availability.title">Availability</h3>
|
||
<p data-i18n="availability.text">Currently at Airbus (contract until Dec 2025). Open to a new Structural Engineer role from January 2026.</p>
|
||
<p class="kbd" data-i18n="availability.location">Madrid, Spain · DE IT ES UK</p>
|
||
</div>
|
||
<div class="card">
|
||
<h3 data-i18n="keycompetencies.title">Key competencies</h3>
|
||
<div class="chips">
|
||
<span class="chip" data-i18n="keycompetencies.damageTolerance">Damage Tolerance</span>
|
||
<span class="chip" data-i18n="keycompetencies.buckling">Buckling & Pre-sizing</span>
|
||
<span class="chip" data-i18n="keycompetencies.impact">Impact & Energy Absorption</span>
|
||
<span class="chip" data-i18n="keycompetencies.drawing">Drawings & GD&T</span>
|
||
<span class="chip" data-i18n="keycompetencies.data">Data Analysis</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- EXPERIENCE -->
|
||
<section id="experience" class="section">
|
||
<h2 data-i18n="sections.experience">Experience</h2>
|
||
|
||
<div class="timeline">
|
||
<!-- AIRBUS -->
|
||
<div class="card item">
|
||
<div class="when">Jan 2025 – Present
|
||
<div class="logo-box"><img class="logo logo--wide" alt="Airbus logo" src="res/logos/airbus.svg" /></div>
|
||
</div>
|
||
<div>
|
||
<h3 class="brand">
|
||
<a class="brand-link" href="https://www.airbus.com" target="_blank" rel="noopener noreferrer" data-i18n="exp.airbus.title">AIRBUS - Structural Design & Analysis Engineer</a>
|
||
<span class="where" data-i18n="exp.airbus.where">Madrid, ES</span>
|
||
</h3>
|
||
<ul>
|
||
<li data-i18n="exp.airbus.p1">Development and assessment of <strong>repair solutions</strong> for composite and metallic components.</li>
|
||
<li data-i18n="exp.airbus.p2">Part design for <strong>A350 HTP</strong> and <strong>Section 19</strong> (rear fuselage) in <strong>CATIA V5</strong>.</li>
|
||
<li data-i18n="exp.airbus.p3">Design Office interface in production, ensuring structural integrity and compliance.</li>
|
||
<li data-i18n="exp.airbus.p4">Development of <strong>numerical models</strong> and explicit simulations for composite damage mechanisms.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- DLR -->
|
||
<div class="card item">
|
||
<div class="when">Mar 2024 – Dec 2024
|
||
<div class="logo-box"><img class="logo logo--square" alt="DLR logo" src="res/logos/dlr.svg" /></div>
|
||
</div>
|
||
<div>
|
||
<h3 class="brand">
|
||
<a class="brand-link" href="https://www.dlr.de" target="_blank" rel="noopener noreferrer" data-i18n="exp.dlr.title">DLR - Master Thesis · R&D Engineer</a>
|
||
<span class="where" data-i18n="exp.dlr.where">Stuttgart, DE</span>
|
||
</h3>
|
||
<ul>
|
||
<li data-i18n="exp.dlr.p1">Thesis for the EU project <strong>r-LightBioCom</strong> on sustainable high-performance composites for automotive/aerospace.</li>
|
||
<li data-i18n="exp.dlr.p2">Computed environmental footprint for 1 kg of materials in <strong>openLCA</strong>.</li>
|
||
<li data-i18n="exp.dlr.p3"><strong>Quasi-static & dynamic</strong> compression tests on cores (honeycomb/foam) and <strong>KPIs</strong> combining <em>LCA</em> and mechanical performance.</li>
|
||
<li data-i18n="exp.dlr.p4">Implementation and calibration of <strong>LS-DYNA MAT cards</strong> from test data.</li>
|
||
<li data-i18n="exp.dlr.p5"><strong>FEM</strong> static/dynamic analyses to validate experiments.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- UNIBO MOTORSPORT -->
|
||
<div class="card item">
|
||
<div class="when">Oct 2021 – Sep 2023
|
||
<div class="logo-box"><img class="logo logo--square" alt="UniBo Motorsport logo" src="res/logos/unibo-motorsport.png" /></div>
|
||
</div>
|
||
<div>
|
||
<h3 class="brand">
|
||
<a class="brand-link" href="https://motorsport.unibo.it/" target="_blank" rel="noopener noreferrer" data-i18n="exp.unibo.title">UniBo Motorsport - Stress & Design Engineer</a>
|
||
<span class="where" data-i18n="exp.unibo.where">Bologna, IT</span>
|
||
</h3>
|
||
<ul>
|
||
<li data-i18n="exp.unibo.p1"><strong>Design</strong> and <strong>Stress Analysis</strong> of automotive parts (monocoque moulds, dashboard support, driver harness).</li>
|
||
<li data-i18n="exp.unibo.p2"><strong>FEM</strong> on CFRP chassis under multiple loads; investigation of delamination causes.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- DVP -->
|
||
<div class="card item">
|
||
<div class="when">Jul 2022 – Sep 2022
|
||
<div class="logo-box"><img class="logo" alt="DVP Vacuum Technology logo" src="res/logos/dvp-vacuum.png" /></div>
|
||
</div>
|
||
<div>
|
||
<h3 class="brand">
|
||
<a class="brand-link" href="https://www.dvp.it" target="_blank" rel="noopener noreferrer" data-i18n="exp.dvp.title">D.V.P. Vacuum Technology - Bachelor Thesis · R&D Engineer</a>
|
||
<span class="where" data-i18n="exp.dvp.where">Bologna, IT</span>
|
||
</h3>
|
||
<ul>
|
||
<li data-i18n="exp.dvp.p1">Experimental campaigns on flow rates and pressure losses in turbines and control valves.</li>
|
||
<li data-i18n="exp.dvp.p2">Built <strong>performance maps</strong> in <strong>GT-Suite</strong> and validated the model.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- CPC -->
|
||
<div class="card item">
|
||
<div class="when">Feb 2022 – Apr 2022
|
||
<div class="logo-box"><img class="logo" alt="CPC Group logo" src="res/logos/cpc.png" /></div>
|
||
</div>
|
||
<div>
|
||
<h3 class="brand">
|
||
<a class="brand-link" href="https://www.cpcgroup.it" target="_blank" rel="noopener noreferrer" data-i18n="exp.cpc.title">CPC Group - Composite Laminator</a>
|
||
<span class="where" data-i18n="exp.cpc.where">Modena, IT</span>
|
||
</h3>
|
||
<ul>
|
||
<li data-i18n="exp.cpc.p1">Lamination of <strong>CFRP</strong> moulds and a chassis for Formula SAE team.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- PROJECTS -->
|
||
<section id="projects" class="section">
|
||
<h2 data-i18n="sections.projects">Academic Projects</h2>
|
||
<div class="grid">
|
||
<div class="card project" data-modal="tmpl-stiffened-panels">
|
||
<h3 data-i18n="projects.card.stiff.title">Composite stiffened panels</h3>
|
||
<p data-i18n="projects.card.stiff.teaser">Buckling & damage tolerance checks, layup optimization (skin & stringers), deflection verification. <span class="where">UPM · Feb–May 2025</span></p>
|
||
</div>
|
||
|
||
<div class="card project" data-modal="tmpl-composite-hashin">
|
||
<h3 data-i18n="projects.card.hashin.title">Composite laminate - Hashin (Abaqus)</h3>
|
||
<p data-i18n="projects.card.hashin.teaser">UD laminate under tension vs compression; ply-by-ply failure using Hashin initiation; FEM-driven analysis. <span class="where">UPM · Jan–Mar 2025</span></p>
|
||
</div>
|
||
|
||
<div class="card project" data-modal="tmpl-section19">
|
||
<h3 data-i18n="projects.card.sec19.title">Rear Fuselage - Section 19 (Skin & Stringers)</h3>
|
||
<p data-i18n="projects.card.sec19.teaser">Skin laminate & stringer concept, drop-offs, reinforcements, frame joints (clips, Ø4.8 mm). <span class="where">UPM · Jan–Mar 2024</span></p>
|
||
</div>
|
||
|
||
<!-- Handlebar Bracket (NUOVO) -->
|
||
<div class="card project" data-modal="tmpl-handlebar-bracket">
|
||
<h3 data-i18n="projects.card.handlebar.title">Handlebar Bracket - AW-2024 T3</h3>
|
||
<p data-i18n="projects.card.handlebar.teaser">
|
||
Topology optimization, clamp & VDI 2230 bolted-joint checks, static/fatigue validation (Ansys), weight minimization.
|
||
<span class="where">Unibo · Sep–Dec 2024</span>
|
||
</p>
|
||
</div>
|
||
|
||
<div class="card project" data-modal="tmpl-drone-structure">
|
||
<h3 data-i18n="projects.card.drone.title">Composite drone structure</h3>
|
||
<p data-i18n="projects.card.drone.teaser">Lamination definition, thickness optimization, harmonic & impact FEM analyses. <span class="where">Unibo · Feb–Jun 2023</span></p>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- TEMPLATES DETTAGLI PROGETTI (i18n) -->
|
||
<!-- Stiffened Panels -->
|
||
<template id="tmpl-stiffened-panels">
|
||
<h4 data-i18n="proj.stiff.h4">Composite stiffened panels</h4>
|
||
<p data-i18n-html="proj.stiff.obj"><strong>Objective -</strong> Design and validate CFRP panels with stringers, minimizing weight while meeting buckling and damage-tolerance requirements under the defined load cases.</p>
|
||
|
||
<div>
|
||
<a class="btn primary" href="res/projects/stiffened-panels/report.pdf" target="_blank" rel="noopener noreferrer" data-i18n="proj.common.download">📄 Download report</a>
|
||
</div>
|
||
|
||
<h5 data-i18n="proj.common.what">What I did</h5>
|
||
<ul>
|
||
<li data-i18n="proj.stiff.li1">Defined <strong>layups</strong> for skin and stringers (symmetry, balance, ply percentages).</li>
|
||
<li data-i18n="proj.stiff.li2"><strong>Pre-sized</strong> reinforcements and verified <strong>local/global buckling</strong> and <strong>stringer crippling</strong>.</li>
|
||
<li data-i18n="proj.stiff.li3">Checked <strong>deflections</strong> and <strong>margins of safety (MS)</strong> vs requirements.</li>
|
||
<li data-i18n="proj.stiff.li5">Used <strong>buckling mode shapes</strong> to guide redesign iterations.</li>
|
||
</ul>
|
||
<h5 data-i18n="proj.common.tools">Tools</h5>
|
||
<p data-i18n="proj.stiff.tools">; Hand Calculation; engineering spreadsheets for trade-offs; aerospace laminate rules.</p>
|
||
<h5 data-i18n="proj.common.results">Results</h5>
|
||
<ul>
|
||
<li data-i18n="proj.stiff.r1">Weight reduction: <strong>≈ X–Y%</strong> (replace with your actual value).</li>
|
||
<li data-i18n="proj.stiff.r2"><strong>MS ≥ 0</strong> for buckling and crippling on critical load cases.</li>
|
||
<li data-i18n="proj.stiff.r3"><strong>Deflections ≤</strong> specified limit.</li>
|
||
</ul>
|
||
<hr style="border:none;border-top:1px solid var(--border);margin:8px 0 4px">
|
||
<ul class="chips" aria-label="Highlights">
|
||
<li class="chip" data-i18n="proj.stiff.ch1">Buckling & Crippling</li>
|
||
<li class="chip" data-i18n="proj.stiff.ch2">Optimized Layup</li>
|
||
<li class="chip" data-i18n="proj.stiff.ch3">FEM-Driven</li>
|
||
<li class="chip" data-i18n="proj.stiff.ch4">MS ≥ 0</li>
|
||
</ul>
|
||
</template>
|
||
|
||
<!-- Hashin (Abaqus) -->
|
||
<template id="tmpl-composite-hashin">
|
||
<h4 data-i18n="proj.hashin.h4">Composite laminate - Hashin (Abaqus)</h4>
|
||
<p data-i18n-html="proj.hashin.obj"><strong>Objective -</strong> Simulate a UD laminate under tension and compression using <em>Hashin damage initiation</em> to identify ply-by-ply failure and compare tensile vs compressive capacity.</p>
|
||
|
||
<div>
|
||
<a class="btn primary" href="res/projects/hashin/report.pdf" target="_blank" rel="noopener noreferrer" data-i18n="proj.common.download">📄 Download report</a>
|
||
</div>
|
||
|
||
<h5 data-i18n="proj.common.model">Model</h5>
|
||
<ul>
|
||
<li data-i18n="proj.hashin.m1">Coupon: <strong>100 × 20 mm</strong>, <strong>10 plies × 0.25 mm = 2.5 mm</strong>; symmetric layup <strong>[0°, ±45°, 0°, 90°]s</strong>.</li>
|
||
<li data-i18n="proj.hashin.m2">Elements: <strong>S4R</strong> shell mesh (~2 mm); material: UD lamina with elastic + Hashin inputs.</li>
|
||
<li data-i18n="proj.hashin.m3">BC/Load: bottom clamped; top edge coupled to a Reference Point with prescribed Y-displacement.</li>
|
||
<li data-i18n="proj.hashin.m4">Damage model: <strong>Hashin initiation</strong> (no damage evolution). Outputs: HSNFTCRT, HSNFCCRT, HSNMTCRT, HSNMCCRT.</li>
|
||
</ul>
|
||
<h5 data-i18n="proj.common.results">Results</h5>
|
||
<ul>
|
||
<li data-i18n="proj.hashin.r1"><strong>Tension:</strong> 90° matrix-tension → ±45° matrix-shear → 0° fiber-tension; <strong>UTS ≈ 413 MPa</strong>.</li>
|
||
<li data-i18n="proj.hashin.r2"><strong>Compression:</strong> ±45° matrix-compression → 90° matrix-compression → 0° fiber-compression; <strong>UCS ≈ 336 MPa</strong>.</li>
|
||
<li data-i18n="proj.hashin.r3"><strong>Strength ratio:</strong> UTS/UCS ≈ <strong>1.23</strong> (≈23% stronger in tension).</li>
|
||
</ul>
|
||
<div class="modal-gallery">
|
||
<figure>
|
||
<img src="res/projects/hashin/mesh.png" alt="Mesh and layup definition (S4R shell model)" loading="lazy">
|
||
<figcaption data-i18n="proj.hashin.cap1">Mesh & layup (S4R shells)</figcaption>
|
||
</figure>
|
||
<figure>
|
||
<img src="res/projects/hashin/damage_evolution.png" alt="Hashin indices showing first-ply failure" loading="lazy">
|
||
<figcaption data-i18n="proj.hashin.cap2">Hashin maps - first-ply failure</figcaption>
|
||
</figure>
|
||
<figure>
|
||
<img src="res/projects/hashin/tension_stress_strain.png" alt="Tension stress–strain curve with stage markers" loading="lazy">
|
||
<figcaption data-i18n="proj.hashin.cap3">Tension σ–ε (staged stiffness drops)</figcaption>
|
||
</figure>
|
||
<figure>
|
||
<img src="res/projects/hashin/compression_stress_strain.png" alt="Compression stress–strain curve with stage markers" loading="lazy">
|
||
<figcaption data-i18n="proj.hashin.cap4">Compression σ–ε (staged stiffness drops)</figcaption>
|
||
</figure>
|
||
</div>
|
||
<hr style="border:none;border-top:1px solid var(--border);margin:8px 0 4px">
|
||
<ul class="chips" aria-label="Highlights">
|
||
<li class="chip" data-i18n="proj.hashin.ch1">Hashin initiation</li>
|
||
<li class="chip" data-i18n="proj.hashin.ch2">[0/±45/0/90]s</li>
|
||
<li class="chip" data-i18n="proj.hashin.ch3">UTS 413 MPa</li>
|
||
<li class="chip" data-i18n="proj.hashin.ch4">UCS 336 MPa</li>
|
||
<li class="chip" data-i18n="proj.hashin.ch5">Ratio ≈ 1.23</li>
|
||
</ul>
|
||
</template>
|
||
|
||
<!-- Section 19 -->
|
||
<template id="tmpl-section19">
|
||
<h4 data-i18n="proj.sec19.h4">Rear Fuselage - Section 19 (Skin & Stringers)</h4>
|
||
<p data-i18n-html="proj.sec19.obj"><strong>Objective -</strong> Define composite skin and stringer concept, reinforcements, drop-offs, and frame joints (clips, Ø4.8 mm) for a fuselage bay between Frames A–B.</p>
|
||
|
||
<div>
|
||
<a class="btn primary" href="res/projects/section19/report.pdf" target="_blank" rel="noopener noreferrer" data-i18n="proj.common.download">📄 Download report</a>
|
||
</div>
|
||
|
||
<h5 data-i18n="proj.sec19.given">Given data</h5>
|
||
<ul>
|
||
<li data-i18n="proj.sec19.g1"><strong>Geometry:</strong> cylinder <strong>R = 4500 mm</strong>; frames <strong>550 mm</strong> apart; stringer pitch <strong>150 mm</strong>.</li>
|
||
<li data-i18n="proj.sec19.g2"><strong>Material:</strong> UD, <strong>CPT 0.184 mm</strong>.</li>
|
||
<li data-i18n="proj.sec19.g3"><strong>Skin:</strong> base <strong>9 plies (2/4/3)</strong>; reinforcement <strong>14 plies (2/8/4)</strong>, <strong>100 × 70 mm</strong> patch.</li>
|
||
<li data-i18n="proj.sec19.g4"><strong>Stringers:</strong> <strong>h < 35 mm</strong>, <strong>R ≥ 3 mm</strong>; web <strong>20 plies</strong> (50% 0° / 40% ±45° / 10% 90°); <strong>web = 2× flange</strong>.</li>
|
||
<li data-i18n="proj.sec19.g5"><strong>Joints:</strong> clips + <strong>Ø 4.8 mm</strong> fasteners.</li>
|
||
</ul>
|
||
<h5 data-i18n="proj.common.what">What I did</h5>
|
||
<ul>
|
||
<li data-i18n="proj.sec19.li1">Built the master geometry (frames & stringers on skin), set pitch and feet widths.</li>
|
||
<li data-i18n="proj.sec19.li2">Mapped skin layups, drop-offs and reinforcement footprint.</li>
|
||
<li data-i18n="proj.sec19.li3">Sized stringer web/flanges and verified repairability (L1 for Ø4.8 mm).</li>
|
||
<li data-i18n="proj.sec19.li4">Defined clip joints and prepared drawings, materials list, and panel weight.</li>
|
||
</ul>
|
||
<div class="modal-gallery">
|
||
<img src="res/projects/section19/assembly.png" alt="Master geometry: frames and stringers on fuselage surface" loading="lazy">
|
||
<img src="res/projects/section19/laminate_map.png" alt="Skin laminate map with drop-offs and reinforcement" loading="lazy">
|
||
<img src="res/projects/section19/drawing_stringer.png" alt="Drawing of the Stringer" loading="lazy">
|
||
<img src="res/projects/section19/drawing_clip.png" alt="Drawing of the Clip" loading="lazy">
|
||
</div>
|
||
<hr style="border:none;border-top:1px solid var(--border);margin:8px 0 4px">
|
||
<ul class="chips" aria-label="Highlights">
|
||
<li class="chip" data-i18n="proj.sec19.ch1">R 4500 mm</li>
|
||
<li class="chip" data-i18n="proj.sec19.ch2">Pitch 150 mm</li>
|
||
<li class="chip" data-i18n="proj.sec19.ch3">UD CPT 0.184 mm</li>
|
||
<li class="chip" data-i18n="proj.sec19.ch4">Clips Ø 4.8 mm</li>
|
||
</ul>
|
||
</template>
|
||
|
||
<!-- Handlebar Bracket -->
|
||
<template id="tmpl-handlebar-bracket">
|
||
<h4 data-i18n="proj.handle.h4">Handlebar Bracket - AW-2024 T3</h4>
|
||
<p data-i18n-html="proj.handle.obj">
|
||
<strong>Objective -</strong> Design a lightweight handlebar bracket within the design envelope,
|
||
compliant with steering/impact/vibration loads, manufacturable by AW-2024 T3.
|
||
</p>
|
||
|
||
<div>
|
||
<a class="btn primary" href="res/projects/handlebar-bracket/report.pdf" target="_blank" rel="noopener noreferrer" data-i18n="proj.common.download">
|
||
📄 Download report
|
||
</a>
|
||
</div>
|
||
|
||
<h5 data-i18n="proj.common.process">Process</h5>
|
||
<ul>
|
||
<li data-i18n="proj.handle.p2"><strong>Topology:</strong> compliance target with constraints on clamp stiffness and load paths → smoothed CAD rebuild.</li>
|
||
<li data-i18n="proj.handle.p3"><strong>Bolts (VDI 2230):</strong> M6 for clamp; torque, preload & checks from FEA reactions.</li>
|
||
<li data-i18n="proj.handle.p4"><strong>Validation (Ansys):</strong> static + fatigue (Goodman); handlebar–clamp contact and surface pressure checks.</li>
|
||
</ul>
|
||
|
||
<h5 data-i18n="proj.common.model">Model</h5>
|
||
<ul>
|
||
<li><strong>Material (bracket):</strong> EN AW-2024 T3 — ρ=2.77×10<sup>−3</sup> kg/mm³, E=73.1 GPa, ν=0.33, σ<sub>y</sub>=345 MPa, σ<sub>u</sub>=483 MPa.</li>
|
||
<li><strong>Loads:</strong> ultimate Fx=450 N, Fz=100 N; fatigue Fx=±350 N, Fz=50 N; life target 10<sup>5</sup> cycles.</li>
|
||
<li><strong>Contacts:</strong> threaded shaft–bracket bonded; under-head frictional (μ≈0.39); mesh conv. ~2.5 mm (local 2 mm).</li>
|
||
</ul>
|
||
|
||
<h5 data-i18n="proj.common.results">Results</h5>
|
||
<ul>
|
||
<li data-i18n="proj.handle.r1"><strong>Safety factors:</strong> ≥ 2 static, ≥ 1 fatigue.</li>
|
||
<li data-i18n="proj.handle.r2"><strong>Clamp stiffness:</strong> within deflection/rotation limits; max deflection < 1 mm at ultimate load.</li>
|
||
<li><strong>Bolts:</strong> VDI 2230 checks OK (tightening, head pressure, stiffness, thread engagement).</li>
|
||
</ul>
|
||
|
||
<div class="modal-gallery">
|
||
<img src="res/projects/handlebar-bracket/design_space.png" alt="Design space: clamp zone and handlebar constraints" loading="lazy">
|
||
<img src="res/projects/handlebar-bracket/topology_outputs.png" alt="Topology optimization outputs for handlebar bracket" loading="lazy">
|
||
<img src="res/projects/handlebar-bracket/finaldesign.png" alt="Final handlebar bracket design (AW-2024 T3)" loading="lazy">
|
||
<img src="res/projects/handlebar-bracket/femresults.png" alt="FEM results: safety factor and deflection maps" loading="lazy">
|
||
</div>
|
||
|
||
<hr style="border:none;border-top:1px solid var(--border);margin:8px 0 4px">
|
||
<ul class="chips" aria-label="Highlights">
|
||
<li class="chip" data-i18n="proj.handle.ch1">AW-2024 T3 </li>
|
||
<li class="chip" data-i18n="proj.handle.ch2">Topology-Optimized</li>
|
||
<li class="chip" data-i18n="proj.handle.ch3">VDI 2230 bolts</li>
|
||
<li class="chip" data-i18n="proj.handle.ch4">Clamp OK</li>
|
||
<li class="chip" data-i18n="proj.handle.ch5">Deflection < 1 mm</li>
|
||
</ul>
|
||
</template>
|
||
|
||
<!-- Drone Structure -->
|
||
<template id="tmpl-drone-structure">
|
||
<h4 data-i18n="proj.drone.h4">Composite drone structure</h4>
|
||
<p data-i18n-html="proj.drone.obj"><strong>Objective -</strong> Define laminate schedule and thicknesses to minimize weight while maintaining stiffness and strength on a composite drone frame, with harmonic and impact checks on critical members.</p>
|
||
|
||
<div>
|
||
<a class="btn primary" href="res/projects/drone/report.pdf" target="_blank" rel="noopener noreferrer" data-i18n="proj.common.download">📄 Download report</a>
|
||
</div>
|
||
|
||
<h5 data-i18n="proj.common.what">What I did</h5>
|
||
<ul>
|
||
<li data-i18n="proj.drone.li1">Selected laminate families for arms and central plate (ply angles, stacking rules, symmetry/balance).</li>
|
||
<li data-i18n="proj.drone.li2">Ran <strong>thickness optimization</strong> under flight-load envelopes (hover, maneuver, landing).</li>
|
||
<li data-i18n="proj.drone.li3">Built FEM and extracted <strong>harmonic response</strong> to avoid resonance near rotor frequencies.</li>
|
||
<li data-i18n="proj.drone.li4">Performed <strong>impact scenarios</strong> on weak spots (arm-hub joints, landing edges).</li>
|
||
</ul>
|
||
<h5 data-i18n="proj.common.results">Results</h5>
|
||
<ul>
|
||
<li data-i18n="proj.drone.r1">Weight reduction vs baseline while keeping <strong>MS ≥ 0</strong> in static checks.</li>
|
||
<li data-i18n="proj.drone.r2">Minimum separation to rotor-induced frequencies achieved.</li>
|
||
<li data-i18n="proj.drone.r3">Local reinforcements added only where needed after impact assessment.</li>
|
||
</ul>
|
||
<div class="modal-gallery">
|
||
<img src="res/projects/drone/finalthickness.png" alt="Thickness map on drone frame" loading="lazy">
|
||
<img src="res/projects/drone/harmonic_response.png" alt="Harmonic response - mode proximity to rotor frequencies" loading="lazy">
|
||
<img src="res/projects/drone/impact_results.png" alt="Impact FEM results on arm-hub joint" loading="lazy">
|
||
</div>
|
||
<hr style="border:none;border-top:1px solid var(--border);margin:8px 0 4px">
|
||
<ul class="chips" aria-label="Highlights">
|
||
<li class="chip" data-i18n="proj.drone.ch1">Layup Optimization</li>
|
||
<li class="chip" data-i18n="proj.drone.ch2">Harmonic Check</li>
|
||
<li class="chip" data-i18n="proj.drone.ch3">Impact FEM</li>
|
||
<li class="chip" data-i18n="proj.drone.ch4">MS ≥ 0</li>
|
||
</ul>
|
||
</template>
|
||
|
||
<!-- EDUCATION -->
|
||
<section id="education" class="section">
|
||
<h2 data-i18n="sections.education">Education</h2>
|
||
<div class="timeline">
|
||
<div class="card item">
|
||
<div class="when">Oct 2024 – Jun 2025
|
||
<div class="logo-box"><img class="logo logo--square" alt="UPM logo" src="res/logos/upm.png" /></div>
|
||
</div>
|
||
<div>
|
||
<h3 class="brand">
|
||
<a class="brand-link" href="https://www.upm.es" target="_blank" rel="noopener noreferrer">Master in Composite Materials</a>
|
||
<span class="where">AIRBUS Programme, Universidad Politécnica de Madrid</span>
|
||
</h3>
|
||
<p>Courses: Design of Advanced Composite Structures · Analysis of Composite Strucures · Abaqus Lab · Space Structures.</p>
|
||
</div>
|
||
</div>
|
||
<div class="card item">
|
||
<div class="when">Oct 2022 – Dec 2025 / Mar 2026
|
||
<div class="logo-box"><img class="logo logo--square" alt="University of Bologna logo" src="res/logos/unibo.svg" /></div>
|
||
</div>
|
||
<div>
|
||
<h3 class="brand">
|
||
<a class="brand-link" href="https://www.unibo.it" target="_blank" rel="noopener noreferrer">MSc in Mechanical Engineering (Minor: Mechanical Design & Modelling)</a>
|
||
<span class="where">University of Bologna</span>
|
||
</h3>
|
||
<p>Courses: Chassis & Body Design Manufacturing · CAD of Surfaces Lab · CAD of Mechanical Structures · Processes and Manufacturing Methods for Product Development.</p>
|
||
</div>
|
||
</div>
|
||
<div class="card item">
|
||
<div class="when">Sep 2023 – Feb 2024
|
||
<div class="logo-box"><img class="logo logo--square" alt="University of Stuttgart logo" src="res/logos/universitat.svg" /></div>
|
||
</div>
|
||
<div>
|
||
<h3 class="brand">
|
||
<a class="brand-link" href="https://www.uni-stuttgart.de" target="_blank" rel="noopener noreferrer">Erasmus+ Aerospace Engineering</a>
|
||
<span class="where">University of Stuttgart</span>
|
||
</h3>
|
||
<p>Computational Dynamics (Robotics) · Computational Mechanics of Structures · Advanced FEA Technology.</p>
|
||
</div>
|
||
</div>
|
||
<div class="card item">
|
||
<div class="when">Sep 2019 – Oct 2022
|
||
<div class="logo-box"><img class="logo logo--square" alt="University of Bologna logo" src="res/logos/unibo.svg" /></div>
|
||
</div>
|
||
<div>
|
||
<h3 class="brand">
|
||
<a class="brand-link" href="https://www.unibo.it" target="_blank" rel="noopener noreferrer">BSc in Mechanical Engineering</a>
|
||
<span class="where">University of Bologna</span>
|
||
</h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- SKILLS -->
|
||
<section id="skills" class="section">
|
||
<h2 data-i18n="sections.skills">Skills</h2>
|
||
<div class="card">
|
||
<h3 data-i18n="skills.software">Software</h3>
|
||
<div class="skills-grid">
|
||
<div>CAD: Siemens NX, CATIA V5, PTC Creo</div>
|
||
<div>FEA: Ansys, Abaqus, Hypermesh/Nastran, GT-Suite</div>
|
||
<div>Programming: Python (pandas, matplotlib, pycatia)</div>
|
||
<div data-i18n="skills.data">Data Analysis: Excel, Python</div>
|
||
</div>
|
||
</div>
|
||
<div class="card" style="margin-top:12px">
|
||
<h3 data-i18n="skills.soft">Soft Skills</h3>
|
||
<div class="chips">
|
||
<span class="chip" data-i18n="skills.teamwork">Teamwork</span>
|
||
<span class="chip" data-i18n="skills.adapt">Adaptability</span>
|
||
<span class="chip" data-i18n="skills.creative">Creative Problem Solving</span>
|
||
</div>
|
||
</div>
|
||
<div class="card" style="margin-top:12px">
|
||
<h3 data-i18n="skills.langs">Languages</h3>
|
||
<div class="lang-grid">
|
||
<div data-i18n="lang.it">Italian - Native</div>
|
||
<div data-i18n="lang.es">Spanish - Fluent (C2)</div>
|
||
<div data-i18n="lang.en">English - Fluent (C1)</div>
|
||
<div data-i18n="lang.de">German - Basic (A1)</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- CONTACT -->
|
||
<section id="contact" class="section">
|
||
<h2 data-i18n="sections.contact">Contact</h2>
|
||
<div class="card">
|
||
<p data-i18n="contact.cta">Interested in collaborating or need the CV in a different format? Get in touch.</p>
|
||
<div style="margin-bottom:18px">
|
||
<strong data-i18n="contact.locationTitle">Current location:</strong> Madrid, Spain
|
||
<div style="margin:10px 0;">
|
||
<iframe src="https://www.openstreetmap.org/export/embed.html?bbox=-3.745%2C40.312%2C-3.543%2C40.563&layer=mapnik&marker=40.4168%2C-3.7038" style="width:100%;height:220px;border-radius:12px;border:1px solid var(--border);" allowfullscreen loading="lazy" referrerpolicy="no-referrer-when-downgrade"></iframe>
|
||
<div style="font-size:13px;color:var(--muted);margin-top:4px;text-align:right"><a href="https://www.openstreetmap.org/?mlat=40.4168&mlon=-3.7038#map=12/40.4168/-3.7038" target="_blank" rel="noopener noreferrer" style="color:var(--primary)" data-i18n="contact.viewmap">View larger map</a></div>
|
||
</div>
|
||
<div style="margin:10px 0 18px 0">
|
||
<strong data-i18n="contact.hoursTitle">Contact hours (Madrid time):</strong>
|
||
<ul style="margin:6px 0 0 0;padding-left:18px;font-size:15px;color:var(--muted)">
|
||
<li data-i18n="contact.hours.weekdays">Monday - Friday: 09:00 - 19:00</li>
|
||
<li data-i18n="contact.hours.saturday">Saturday: 09:00 - 19:00</li>
|
||
<li data-i18n="contact.hours.sunday">Sunday: 09:00 - 12:00</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div style="display:flex; gap:10px; flex-wrap:wrap">
|
||
<a class="btn" href="mailto:alessan.acunaguardia@gmail.com">📧 alessan.acunaguardia@gmail.com</a>
|
||
<a class="btn" href="tel:+393277671048">📱 +39 327 767 1048</a>
|
||
<a class="btn" href="https://www.linkedin.com/in/aleacuna" target="_blank" rel="noopener noreferrer">💼 linkedin.com/in/aleacuna</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="footer">
|
||
<div>© <span id="year"></span> Alessandro Acuna · <span data-i18n="footer.updated">Last updated:</span> <span id="updated"></span></div>
|
||
</section>
|
||
</main>
|
||
|
||
<!-- DIALOG PROGETTO -->
|
||
<dialog class="project-modal" id="projectModal" aria-modal="true" role="dialog" aria-labelledby="modalTitle">
|
||
<div class="modal-header">
|
||
<h3 class="modal-title" id="modalTitle" data-i18n="modal.title">Project details</h3>
|
||
<button class="btn modal-close" type="button" aria-label="Chiudi">✖</button>
|
||
</div>
|
||
<div class="modal-body" id="projectModalBody"></div>
|
||
<div class="modal-actions">
|
||
<button class="btn modal-close" type="button" data-i18n="modal.close">Close</button>
|
||
</div>
|
||
</dialog>
|
||
|
||
<!-- DIALOG LIGHTBOX -->
|
||
<dialog id="lightbox" aria-labelledby="lightboxCaption">
|
||
<div class="lightbox-wrap">
|
||
<button class="btn lightbox-close" type="button" aria-label="Close">✖</button>
|
||
<figure class="lightbox-figure">
|
||
<img id="lightboxImg" class="lightbox-img" src="" alt="">
|
||
<figcaption id="lightboxCaption" class="lightbox-caption"></figcaption>
|
||
</figure>
|
||
</div>
|
||
</dialog>
|
||
|
||
<!-- MODALI -->
|
||
<script>
|
||
(function(){
|
||
const modal = document.getElementById('projectModal');
|
||
const body = document.getElementById('projectModalBody');
|
||
const titleEl = modal.querySelector('.modal-title');
|
||
let lastTrigger = null;
|
||
|
||
const getFocusables = () =>
|
||
modal.querySelectorAll('button,[href],input,select,textarea,[tabindex]:not([tabindex="-1"])');
|
||
|
||
document.addEventListener('click', (e)=>{
|
||
const card = e.target.closest('.project[data-modal]');
|
||
if(!card) return;
|
||
lastTrigger = card;
|
||
|
||
const tmplId = card.getAttribute('data-modal');
|
||
const tmpl = document.getElementById(tmplId);
|
||
if(!tmpl){ console.warn('Template non trovato:', tmplId); return; }
|
||
|
||
const cardTitle = card.querySelector('h3')?.textContent?.trim() || 'Dettagli progetto';
|
||
titleEl.textContent = cardTitle;
|
||
|
||
body.innerHTML = '';
|
||
body.appendChild(tmpl.content.cloneNode(true));
|
||
|
||
// Re-applica traduzioni ai contenuti appena iniettati
|
||
if(window.__i18n && typeof window.__i18n.apply === 'function'){
|
||
window.__i18n.apply();
|
||
}
|
||
|
||
if(typeof modal.showModal === 'function'){ modal.showModal(); }
|
||
else { modal.setAttribute('open',''); }
|
||
|
||
setTimeout(()=>{ getFocusables()[0]?.focus(); }, 0);
|
||
document.body.style.overflow = 'hidden';
|
||
});
|
||
|
||
modal.addEventListener('click', (e)=>{
|
||
if(e.target.closest('.modal-close')) modal.close();
|
||
});
|
||
|
||
modal.addEventListener('click', (e)=>{
|
||
const r = modal.getBoundingClientRect();
|
||
const inside = (e.clientX >= r.left && e.clientX <= r.right && e.clientY >= r.top && e.clientY <= r.bottom);
|
||
if(!inside) modal.close();
|
||
});
|
||
|
||
modal.addEventListener('cancel', (e)=>{ e.preventDefault(); modal.close(); });
|
||
|
||
modal.addEventListener('close', ()=>{
|
||
document.body.style.overflow = '';
|
||
lastTrigger?.focus();
|
||
});
|
||
|
||
modal.addEventListener('keydown',(e)=>{
|
||
if(e.key !== 'Tab') return;
|
||
const f = [...getFocusables()];
|
||
if(!f.length) return;
|
||
const i = f.indexOf(document.activeElement);
|
||
if(e.shiftKey && (i === 0 || i === -1)){ e.preventDefault(); f[f.length-1].focus(); }
|
||
else if(!e.shiftKey && (i === f.length-1)){ e.preventDefault(); f[0].focus(); }
|
||
});
|
||
})();
|
||
</script>
|
||
|
||
<!-- LIGHTBOX -->
|
||
<script>
|
||
(function(){
|
||
const lb = document.getElementById('lightbox');
|
||
const img = document.getElementById('lightboxImg');
|
||
const cap = document.getElementById('lightboxCaption');
|
||
|
||
document.addEventListener('click', (e)=>{
|
||
const targetImg = e.target.closest('.modal-gallery img');
|
||
if(!targetImg) return;
|
||
|
||
img.src = targetImg.src;
|
||
img.alt = targetImg.alt || '';
|
||
cap.textContent = targetImg.closest('figure')?.querySelector('figcaption')?.textContent || targetImg.alt || '';
|
||
|
||
if(typeof lb.showModal === 'function'){ lb.showModal(); }
|
||
else { lb.setAttribute('open',''); }
|
||
});
|
||
|
||
lb.addEventListener('click', (e)=>{
|
||
if(e.target.closest('.lightbox-close')) lb.close();
|
||
});
|
||
|
||
lb.addEventListener('click', (e)=>{
|
||
const r = lb.getBoundingClientRect();
|
||
const inside = (e.clientX >= r.left && e.clientX <= r.right && e.clientY >= r.top && e.clientY <= r.bottom);
|
||
if(!inside) lb.close();
|
||
});
|
||
|
||
lb.addEventListener('cancel', (e)=>{ e.preventDefault(); lb.close(); });
|
||
})();
|
||
</script>
|
||
|
||
<!-- i18n + CUSTOM LANGUAGE UI -->
|
||
<script>
|
||
(function(){
|
||
const DEFAULT_LANG = 'it';
|
||
const STORAGE_KEY = 'site-lang';
|
||
|
||
const t = {
|
||
/* =========================
|
||
ITALIANO
|
||
========================= */
|
||
it: {
|
||
'cta.downloadCv': '⬇️ Scarica CV',
|
||
'cta.downloadCv@title': 'Scarica il CV',
|
||
'nav.about':'About',
|
||
'nav.experience':'Esperienza',
|
||
'nav.projects':'Progetti',
|
||
'nav.education':'Formazione',
|
||
'nav.skills':'Competenze',
|
||
'nav.contact':'Contatti',
|
||
|
||
'hero.role':'Structural Engineer',
|
||
'hero.blurb':'Ingegnere Meccanico appassionato di aerospazio e advanced manufacturing, specializzato nello sviluppo di componenti strutturali dal concept alla validazione FEM avanzata. Focus su materiali compositi, CAD, FEA e simulazioni esplicite.',
|
||
|
||
'availability.title':'Disponibilità',
|
||
'availability.text':'Attualmente in Airbus (contratto fino a Dic 2025). Disponibile per un nuovo ruolo da Gennaio 2026.',
|
||
'availability.location':'Madrid, Spain · DE IT ES UK',
|
||
|
||
'keycompetencies.title':'Competenze chiave',
|
||
'keycompetencies.damageTolerance':'Damage Tolerance',
|
||
'keycompetencies.buckling':'Buckling & Pre-sizing',
|
||
'keycompetencies.impact':'Impact & Energy Absorption',
|
||
'keycompetencies.drawing':'Drawings & GD&T',
|
||
'keycompetencies.data':'Data Analysis',
|
||
|
||
'sections.experience':'Esperienza',
|
||
'sections.projects':'Progetti Accademici',
|
||
'sections.education':'Formazione',
|
||
'sections.skills':'Competenze',
|
||
'sections.contact':'Contatti',
|
||
|
||
'projects.card.stiff.title':'Pannelli compositi irrigiditi',
|
||
'projects.card.stiff.teaser':'Verifiche di buckling e damage tolerance, ottimizzazione layup (skin & stringers), verifica deflessioni. <span class="where">UPM · Feb–Mag 2025</span>',
|
||
'projects.card.hashin.title':'Laminato composito - Hashin (Abaqus)',
|
||
'projects.card.hashin.teaser':'Provino UD a trazione vs. compressione; failure ply-by-ply con Hashin; analisi FEM. <span class="where">UPM · Gen–Mar 2025</span>',
|
||
'projects.card.sec19.title':'Sezione 19 - fusoliera posteriore (Skin & Stringers)',
|
||
'projects.card.sec19.teaser':'Skin laminate & concept stringers, drop-off, rinforzi, giunti a frame (clip, Ø4.8 mm). <span class="where">UPM · Gen–Mar 2024</span>',
|
||
'projects.card.handlebar.title':'Staffa manubrio - AW-2024 T3',
|
||
'projects.card.handlebar.teaser':'Ottimizzazione topologica, verifica morsetto e bulloneria VDI 2230, validazione statico/fatica (Ansys), minimizzazione del peso. <span class="where">Unibo · Set–Dic 2024</span>',
|
||
'projects.card.drone.title':'Struttura drone in composito',
|
||
'projects.card.drone.teaser':'Definizione lamina, ottimizzazione spessori, analisi armoniche & impatto. <span class="where">Unibo · Feb–Giu 2023</span>',
|
||
|
||
'skills.software':'Software',
|
||
'skills.data':'Data Analysis: Excel, Python',
|
||
'skills.soft':'Soft Skills',
|
||
'skills.teamwork':'Teamwork',
|
||
'skills.adapt':'Adaptability',
|
||
'skills.creative':'Creative Problem Solving',
|
||
'skills.langs':'Lingue',
|
||
'lang.it':'Italiano - Madrelingua',
|
||
'lang.es':'Spagnolo - Fluente (C2)',
|
||
'lang.en':'Inglese - Fluente (C1)',
|
||
'lang.de':'Tedesco - Base (A1)',
|
||
|
||
'contact.cta':'Interessa collaborare o vuoi il CV in un formato diverso? Scrivimi.',
|
||
'contact.locationTitle':'Località attuale:',
|
||
'contact.viewmap':'Apri mappa',
|
||
'contact.hoursTitle':'Orari di contatto (ora di Madrid):',
|
||
'contact.hours.weekdays':'Lunedì - Venerdì: 09:00 - 19:00',
|
||
'contact.hours.saturday':'Sabato: 09:00 - 19:00',
|
||
'contact.hours.sunday':'Domenica: 09:00 - 12:00',
|
||
|
||
'footer.updated':'Ultimo aggiornamento:',
|
||
'modal.title':'Dettagli progetto',
|
||
'modal.close':'Chiudi',
|
||
|
||
/* EXPERIENCE (IT) */
|
||
'exp.airbus.title':'AIRBUS - Structural Design & Analysis Engineer',
|
||
'exp.airbus.where':'Madrid, ES',
|
||
'exp.airbus.p1':'Sviluppo e valutazione di <strong>riparazioni</strong> per componenti in composito e metallo.',
|
||
'exp.airbus.p2':'Progettazione parti per <strong>A350 HTP</strong> e <strong>Sezione 19</strong> (fusoliera posteriore) con <strong>CATIA V5</strong>.',
|
||
'exp.airbus.p3':'Interfaccia Design Office in produzione, garantendo integrità strutturale e compliance.',
|
||
'exp.airbus.p4':'Sviluppo di <strong>modelli numerici</strong> e simulazioni esplicite su meccanismi di danno nei compositi con Abaqus.',
|
||
|
||
'exp.dlr.title':'DLR - Tesi di Laurea · R&D Engineer',
|
||
'exp.dlr.where':'Stoccarda, DE',
|
||
'exp.dlr.p1':'Tesi per il progetto UE <strong>r-LightBioCom</strong> su compositi sostenibili ad alte prestazioni per automotive/aerospazio.',
|
||
'exp.dlr.p2':'Calcolo dell’impronta ambientale per 1 kg di materiali con <strong>openLCA</strong>.',
|
||
'exp.dlr.p3':'Test di compressione <strong>quasi-statici e dinamici</strong> su cores (honeycomb/foam) e definizione di <strong>KPI</strong> integrando <em>LCA</em> e prestazioni meccaniche.',
|
||
'exp.dlr.p4':'Implementazione e calibrazione <strong>MAT cards</strong> in <strong>LS-DYNA</strong> dai dati sperimentali.',
|
||
'exp.dlr.p5':'<strong>Analisi FEM</strong> statiche/dinamiche per validare i risultati sperimentali.',
|
||
|
||
'exp.unibo.title':'UniBo Motorsport - Stress & Design Engineer',
|
||
'exp.unibo.where':'Bologna, IT',
|
||
'exp.unibo.p1':'<strong>Design</strong> e <strong>Stress Analysis</strong> di parti automotive (stampi monoscocca, supporto cruscotto, imbragatura pilota).',
|
||
'exp.unibo.p2':'<strong>FEM</strong> su telaio CFRP con carichi multipli; indagine sulle cause di delaminazione.',
|
||
|
||
'exp.dvp.title':'D.V.P. Vacuum Technology - Tesi Triennale · R&D Engineer',
|
||
'exp.dvp.where':'Bologna, IT',
|
||
'exp.dvp.p1':'Campagne sperimentali su portate e perdite di carico in turbine e valvole.',
|
||
'exp.dvp.p2':'Sviluppo di <strong>mappe prestazionali</strong> in <strong>GT-Suite</strong> e validazione modello.',
|
||
|
||
'exp.cpc.title':'CPC Group - Composite Laminator',
|
||
'exp.cpc.where':'Modena, IT',
|
||
'exp.cpc.p1':'Laminazione di stampi <strong>CFRP</strong> e di un telaio per il team Formula SAE.',
|
||
|
||
/* PROGETTI - common */
|
||
'proj.common.what':'Cosa ho fatto',
|
||
'proj.common.model':'Modello',
|
||
'proj.common.tools':'Strumenti',
|
||
'proj.common.results':'Risultati',
|
||
'proj.common.process':'Processo',
|
||
'proj.common.download':'📄 Scarica report',
|
||
|
||
/* === PROGETTI - dettagli (IT) === */
|
||
'proj.stiff.h4':'Pannelli compositi irrigiditi',
|
||
'proj.stiff.obj':'<strong>Obiettivo -</strong> Progettare e validare pannelli CFRP irrigiditi minimizzando il peso e rispettando i requisiti di buckling e damage tolerance.',
|
||
'proj.stiff.li1':'Definizione dei <strong>layup</strong> per skin e stringers (simmetria, bilanciamento, percentuali).',
|
||
'proj.stiff.li2':'<strong>Predimensionamento</strong> dei rinforzi e verifica di <strong>buckling</strong> locale/globale e <strong>crippling</strong> stringer.',
|
||
'proj.stiff.li3':'Verifica <strong>deflessioni</strong> e <strong>MS</strong> vs requisiti.',
|
||
'proj.stiff.li4':'<strong>Ottimizzazione spessori</strong> con feedback FEM.',
|
||
'proj.stiff.li5':'Uso delle <strong>forme modali</strong> di buckling per guidare il redesign.',
|
||
'proj.stiff.tools':'Calcoli a mano; fogli ingegneristici; regole aerospaziali di laminazione.',
|
||
'proj.stiff.r1':'Riduzione di peso: <strong>≈ X–Y%</strong>.',
|
||
'proj.stiff.r2':'<strong>MS ≥ 0</strong> per buckling/crippling nei casi critici.',
|
||
'proj.stiff.r3':'<strong>Deflessioni ≤</strong> limite.',
|
||
'proj.stiff.cap1':'Vista pannello & stringers',
|
||
'proj.stiff.cap2':'Modi di buckling 1–3 (FEM)',
|
||
'proj.stiff.cap3':'Tabella layup & spessori',
|
||
'proj.stiff.ch1':'Buckling & Crippling',
|
||
'proj.stiff.ch2':'Layup ottimizzato',
|
||
'proj.stiff.ch3':'FEM-Driven',
|
||
'proj.stiff.ch4':'MS ≥ 0',
|
||
|
||
'proj.hashin.h4':'Laminato composito - Hashin (Abaqus)',
|
||
'proj.hashin.obj':'<strong>Obiettivo -</strong> Simulare un laminato UD a trazione e compressione con <em>inizio danno Hashin</em> per identificare il first-ply failure e confrontare la capacità a trazione/pressione.',
|
||
'proj.hashin.m1':'Provino: <strong>100 × 20 mm</strong>, <strong>10 lamine × 0.25 mm = 2.5 mm</strong>; layup simmetrico <strong>[0°, ±45°, 0°, 90°]s</strong>.',
|
||
'proj.hashin.m2':'Elementi: <strong>S4R</strong> (≈2 mm); materiale: lamina UD con elastico + Hashin.',
|
||
'proj.hashin.m3':'Vincoli/Carico: bordo inferiore vincolato; bordo superiore accoppiato a RP con spostamento prescr. in Y.',
|
||
'proj.hashin.m4':'Danno: <strong>Hashin initiation</strong> (no evoluzione). Output: HSNFTCRT, HSNFCCRT, HSNMTCRT, HSNMCCRT.',
|
||
'proj.hashin.r1':'<strong>Trazione:</strong> 90° matrix-tension → ±45° matrix-shear → 0° fiber-tension; <strong>UTS ≈ 413 MPa</strong>.',
|
||
'proj.hashin.r2':'<strong>Compressione:</strong> ±45° matrix-compression → 90° matrix-compression → 0° fiber-compression; <strong>UCS ≈ 336 MPa</strong>.',
|
||
'proj.hashin.r3':'<strong>Rapporto:</strong> UTS/UCS ≈ <strong>1.23</strong>.',
|
||
'proj.hashin.cap1':'Mesh & layup (S4R)',
|
||
'proj.hashin.cap2':'Mappe Hashin - first-ply',
|
||
'proj.hashin.cap3':'σ–ε trazione (drop di rigidezza)',
|
||
'proj.hashin.cap4':'σ–ε compressione (drop di rigidezza)',
|
||
'proj.hashin.ch1':'Hashin initiation',
|
||
'proj.hashin.ch2':'[0/±45/0/90]s',
|
||
'proj.hashin.ch3':'UTS 413 MPa',
|
||
'proj.hashin.ch4':'UCS 336 MPa',
|
||
'proj.hashin.ch5':'Rapporto ≈ 1.23',
|
||
|
||
'proj.sec19.h4':'Sezione 19 - fusoliera (Skin & Stringers)',
|
||
'proj.sec19.obj':'<strong>Obiettivo -</strong> Definire skin e stringers in composito, rinforzi, drop-off e giunti ai frame (clip, Ø4.8 mm) per un pannello tra i frame A–B.',
|
||
'proj.sec19.given':'Dati di base',
|
||
'proj.sec19.g1':'<strong>Geometria:</strong> cilindro <strong>R = 4500 mm</strong>; frame distanti <strong>550 mm</strong>; pitch stringer <strong>150 mm</strong>.',
|
||
'proj.sec19.g2':'<strong>Materiale:</strong> UD, <strong>CPT 0.184 mm</strong>.',
|
||
'proj.sec19.g3':'<strong>Skin:</strong> base <strong>9 lamine (2/4/3)</strong>; rinforzo <strong>14 lamine (2/8/4)</strong>, patch <strong>100 × 70 mm</strong>.',
|
||
'proj.sec19.g4':'<strong>Stringers:</strong> <strong>h < 35 mm</strong>, <strong>R ≥ 3 mm</strong>; anima <strong>20 lamine</strong> (50% 0° / 40% ±45° / 10% 90°); <strong>anima = 2× flange</strong>.',
|
||
'proj.sec19.g5':'<strong>Giunzioni:</strong> clip + <strong>Ø 4.8 mm</strong> fasteners.',
|
||
'proj.sec19.li1':'Geometria master (frame & stringer sulla skin), pitch e piedi.',
|
||
'proj.sec19.li2':'Mappatura layup skin, drop-off e footprint di rinforzo.',
|
||
'proj.sec19.li3':'Sizing web/flange e verifiche riparabilità (L1 con Ø4.8).',
|
||
'proj.sec19.li4':'Definizione clip e preparazione tavole/materiali/peso.',
|
||
'proj.sec19.ch1':'R 4500 mm',
|
||
'proj.sec19.ch2':'Pitch 150 mm',
|
||
'proj.sec19.ch3':'UD CPT 0.184 mm',
|
||
'proj.sec19.ch4':'Clip Ø 4.8 mm',
|
||
|
||
'proj.handle.h4':'Staffa manubrio - AW-2024 T3',
|
||
'proj.handle.obj':'<strong>Obiettivo -</strong> Progettare una staffa manubrio leggera entro gli ingombri, conforme ai carichi di sterzo/urto/vibrazioni, producibile in AW-2024 T3.',
|
||
'proj.handle.p2':'<strong>Topologia:</strong> obiettivo di compliance con vincoli su rigidezza del morsetto e percorsi di carico → rebuild CAD levigato.',
|
||
'proj.handle.p3':'<strong>Bulloni (VDI 2230):</strong> M6 per morsetto; coppia, preload e verifiche da reazioni FEM.',
|
||
'proj.handle.p4':'<strong>Validazione (Ansys):</strong> statico + fatica (Goodman); contatto manubrio–morsetto e pressioni superficiali.',
|
||
'proj.handle.r1':'<strong>Fattori di sicurezza:</strong> ≥ 2 statico, ≥ 1 a fatica.',
|
||
'proj.handle.r2':'<strong>Rigidezza morsetto:</strong> entro i limiti di flessione/rotazione; freccia max < 1 mm.',
|
||
'proj.handle.ch1':'AW-2024 T3',
|
||
'proj.handle.ch2':'Topology-Optimized',
|
||
'proj.handle.ch3':'VDI 2230',
|
||
'proj.handle.ch4':'Morsetto OK',
|
||
'proj.handle.ch5':'Deflessione < 1 mm',
|
||
|
||
'proj.drone.h4':'Struttura drone in composito',
|
||
'proj.drone.obj':'<strong>Obiettivo -</strong> Definire layup e spessori per minimizzare il peso mantenendo rigidezza/resistenza; verifiche armoniche e impatto.',
|
||
'proj.drone.li1':'Selezione famiglie di laminati per bracci e piastra.',
|
||
'proj.drone.li2':'<strong>Ottimizzazione spessori</strong> su inviluppo carichi di volo.',
|
||
'proj.drone.li3':'FEM con <strong>risposta armonica</strong> lontano da frequenze rotori.',
|
||
'proj.drone.li4':'Scenari di <strong>impatto</strong> su giunti braccio-mozzo e bordi d’atterraggio.',
|
||
'proj.drone.r1':'Riduzione peso con <strong>MS ≥ 0</strong>.',
|
||
'proj.drone.r2':'Separazione minima da frequenze indotte dai rotori.',
|
||
'proj.drone.r3':'Rinforzi locali solo dove necessari.',
|
||
'proj.drone.ch1':'Layup Optimization',
|
||
'proj.drone.ch2':'Harmonic Check',
|
||
'proj.drone.ch3':'Impact FEM',
|
||
'proj.drone.ch4':'MS ≥ 0'
|
||
},
|
||
|
||
/* =========================
|
||
ENGLISH
|
||
========================= */
|
||
en: {
|
||
'cta.downloadCv': '⬇️ Download CV',
|
||
'cta.downloadCv@title': 'Download CV',
|
||
'nav.about':'About',
|
||
'nav.experience':'Experience',
|
||
'nav.projects':'Projects',
|
||
'nav.education':'Education',
|
||
'nav.skills':'Skills',
|
||
'nav.contact':'Contact',
|
||
|
||
'hero.role':'Structural Engineer',
|
||
'hero.blurb':'Mechanical Engineer passionate about aerospace and advanced manufacturing, specialized in developing structural components from concept to advanced FEM validation. Focus on composite materials, CAD, FEA, and explicit simulations.',
|
||
|
||
'availability.title':'Availability',
|
||
'availability.text':'Currently at Airbus (contract until Dec 2025). Open to a new Structural Engineer role from January 2026.',
|
||
'availability.location':'Madrid, Spain · DE IT ES UK',
|
||
|
||
'keycompetencies.title':'Key competencies',
|
||
'keycompetencies.damageTolerance':'Damage Tolerance',
|
||
'keycompetencies.buckling':'Buckling & Pre-sizing',
|
||
'keycompetencies.impact':'Impact & Energy Absorption',
|
||
'keycompetencies.drawing':'Drawings & GD&T',
|
||
'keycompetencies.data':'Data Analysis',
|
||
|
||
'sections.experience':'Experience',
|
||
'sections.projects':'Academic Projects',
|
||
'sections.education':'Education',
|
||
'sections.skills':'Skills',
|
||
'sections.contact':'Contact',
|
||
|
||
'projects.card.stiff.title':'Composite stiffened panels',
|
||
'projects.card.stiff.teaser':'Buckling & damage tolerance checks, layup optimization (skin & stringers), deflection verification. <span class="where">UPM · Feb–May 2025</span>',
|
||
'projects.card.hashin.title':'Composite laminate - Hashin (Abaqus)',
|
||
'projects.card.hashin.teaser':'UD laminate under tension vs compression; ply-by-ply failure using Hashin initiation; FEM-driven analysis. <span class="where">UPM · Jan–Mar 2025</span>',
|
||
'projects.card.sec19.title':'Rear Fuselage - Section 19 (Skin & Stringers)',
|
||
'projects.card.sec19.teaser':'Skin laminate & stringer concept, drop-offs, reinforcements, frame joints (clips, Ø4.8 mm). <span class="where">UPM · Jan–Mar 2024</span>',
|
||
'projects.card.handlebar.title':'Handlebar Bracket - AW-2024 T3',
|
||
'projects.card.handlebar.teaser':'Topology optimization, clamp & VDI 2230 bolted-joint checks, static/fatigue validation (Ansys), weight minimization. <span class="where">Unibo · Sep–Dec 2024</span>',
|
||
'projects.card.drone.title':'Composite drone structure',
|
||
'projects.card.drone.teaser':'Lamination definition, thickness optimization, harmonic & impact FEM analyses. <span class="where">Unibo · Feb–Jun 2023</span>',
|
||
|
||
'skills.software':'Software',
|
||
'skills.data':'Data Analysis: Excel, Python',
|
||
'skills.soft':'Soft Skills',
|
||
'skills.teamwork':'Teamwork',
|
||
'skills.adapt':'Adaptability',
|
||
'skills.creative':'Creative Problem Solving',
|
||
'skills.langs':'Languages',
|
||
'lang.it':'Italian - Native',
|
||
'lang.es':'Spanish - Fluent (C2)',
|
||
'lang.en':'English - Fluent (C1)',
|
||
'lang.de':'German - Basic (A1)',
|
||
|
||
'contact.cta':'Interested in collaborating or need the CV in a different format? Get in touch.',
|
||
'contact.locationTitle':'Current location:',
|
||
'contact.viewmap':'View larger map',
|
||
'contact.hoursTitle':'Contact hours (Madrid time):',
|
||
'contact.hours.weekdays':'Monday - Friday: 09:00 - 19:00',
|
||
'contact.hours.saturday':'Saturday: 09:00 - 19:00',
|
||
'contact.hours.sunday':'Sunday: 09:00 - 12:00',
|
||
|
||
'footer.updated':'Last updated:',
|
||
'modal.title':'Project details',
|
||
'modal.close':'Close',
|
||
|
||
/* EXPERIENCE */
|
||
'exp.airbus.title':'AIRBUS - Structural Design & Analysis Engineer',
|
||
'exp.airbus.where':'Madrid, ES',
|
||
'exp.airbus.p1':'Development and assessment of <strong>repair solutions</strong> for composite and metallic components.',
|
||
'exp.airbus.p2':'Part design for <strong>A350 HTP</strong> and <strong>Section 19</strong> (rear fuselage) in <strong>CATIA V5</strong>.',
|
||
'exp.airbus.p3':'Design Office interface in production, ensuring structural integrity and compliance.',
|
||
'exp.airbus.p4':'Development of <strong>numerical models</strong> and explicit simulations for composite damage mechanisms in Abaqus.',
|
||
|
||
'exp.dlr.title':'DLR - Master Thesis · R&D Engineer',
|
||
'exp.dlr.where':'Stuttgart, DE',
|
||
'exp.dlr.p1':'Thesis for the EU project <strong>r-LightBioCom</strong> on sustainable high-performance composites for automotive/aerospace.',
|
||
'exp.dlr.p2':'Computed environmental footprint for 1 kg of materials in <strong>openLCA</strong>.',
|
||
'exp.dlr.p3':'<strong>Quasi-static & dynamic</strong> compression tests on cores (honeycomb/foam) and <strong>KPIs</strong> combining <em>LCA</em> and mechanical performance.',
|
||
'exp.dlr.p4':'Implementation and calibration of <strong>LS-DYNA MAT cards</strong> from test data.',
|
||
'exp.dlr.p5':'<strong>FEM</strong> static/dynamic analyses to validate experiments.',
|
||
|
||
'exp.unibo.title':'UniBo Motorsport - Stress & Design Engineer',
|
||
'exp.unibo.where':'Bologna, IT',
|
||
'exp.unibo.p1':'<strong>Design</strong> and <strong>Stress Analysis</strong> of automotive parts (monocoque moulds, dashboard support, driver harness).',
|
||
'exp.unibo.p2':'<strong>FEM</strong> on CFRP chassis under multiple loads; investigation of delamination causes.',
|
||
|
||
'exp.dvp.title':'D.V.P. Vacuum Technology - Bachelor Thesis · R&D Engineer',
|
||
'exp.dvp.where':'Bologna, IT',
|
||
'exp.dvp.p1':'Experimental campaigns on flow rates and pressure losses in turbines and control valves.',
|
||
'exp.dvp.p2':'Built <strong>performance maps</strong> in <strong>GT-Suite</strong> and validated the model.',
|
||
|
||
'exp.cpc.title':'CPC Group - Composite Laminator',
|
||
'exp.cpc.where':'Modena, IT',
|
||
'exp.cpc.p1':'Lamination of <strong>CFRP</strong> moulds and a chassis for Formula SAE team.',
|
||
|
||
/* === PROJECT DETAILS (EN) === */
|
||
'proj.common.what':'What I did',
|
||
'proj.common.model':'Model',
|
||
'proj.common.tools':'Tools',
|
||
'proj.common.results':'Results',
|
||
'proj.common.process':'Process',
|
||
'proj.common.download':'📄 Download report',
|
||
|
||
'proj.stiff.h4':'Composite stiffened panels',
|
||
'proj.stiff.obj':'<strong>Objective -</strong> Design and validate CFRP panels with stringers, minimizing weight while meeting buckling and damage-tolerance requirements under the defined load cases.',
|
||
'proj.stiff.li1':'Defined <strong>layups</strong> for skin and stringers (symmetry, balance, ply percentages).',
|
||
'proj.stiff.li2':'<strong>Pre-sized</strong> reinforcements and verified <strong>local/global buckling</strong> and <strong>stringer crippling</strong>.',
|
||
'proj.stiff.li3':'Checked <strong>deflections</strong> and <strong>margins of safety (MS)</strong> vs requirements.',
|
||
'proj.stiff.li4':'Performed <strong>thickness optimization</strong> (weight vs stiffness/stability) with FEM feedback.',
|
||
'proj.stiff.li5':'Used <strong>buckling mode shapes</strong> to guide redesign iterations.',
|
||
'proj.stiff.tools':'Hand Calculation; engineering spreadsheets for trade-offs; aerospace laminate rules.',
|
||
'proj.stiff.r1':'Weight reduction: <strong>≈ X–Y%</strong> (replace with your actual value).',
|
||
'proj.stiff.r2':'<strong>MS ≥ 0</strong> for buckling and crippling on critical load cases.',
|
||
'proj.stiff.r3':'<strong>Deflections ≤</strong> specified limit.',
|
||
'proj.stiff.cap1':'Panel & stringers overview',
|
||
'proj.stiff.cap2':'Buckling modes 1–3 (FEM)',
|
||
'proj.stiff.cap3':'Layup & thickness table',
|
||
'proj.stiff.ch1':'Buckling & Crippling',
|
||
'proj.stiff.ch2':'Optimized Layup',
|
||
'proj.stiff.ch3':'FEM-Driven',
|
||
'proj.stiff.ch4':'MS ≥ 0',
|
||
|
||
'proj.hashin.h4':'Composite laminate - Hashin (Abaqus)',
|
||
'proj.hashin.obj':'<strong>Objective -</strong> Simulate a UD laminate under tension and compression using <em>Hashin damage initiation</em> to identify ply-by-ply failure and compare tensile vs compressive capacity.',
|
||
'proj.hashin.m1':'Coupon: <strong>100 × 20 mm</strong>, <strong>10 plies × 0.25 mm = 2.5 mm</strong>; symmetric layup <strong>[0°, ±45°, 0°, 90°]s</strong>.',
|
||
'proj.hashin.m2':'Elements: <strong>S4R</strong> shell mesh (~2 mm); material: UD lamina with elastic + Hashin inputs.',
|
||
'proj.hashin.m3':'BC/Load: bottom clamped; top edge coupled to a Reference Point with prescribed Y-displacement.',
|
||
'proj.hashin.m4':'Damage model: <strong>Hashin initiation</strong> (no damage evolution). Outputs: HSNFTCRT, HSNFCCRT, HSNMTCRT, HSNMCCRT.',
|
||
'proj.hashin.r1':'<strong>Tension:</strong> 90° matrix-tension → ±45° matrix-shear → 0° fiber-tension; <strong>UTS ≈ 413 MPa</strong>.',
|
||
'proj.hashin.r2':'<strong>Compression:</strong> ±45° matrix-compression → 90° matrix-compression → 0° fiber-compression; <strong>UCS ≈ 336 MPa</strong>.',
|
||
'proj.hashin.r3':'<strong>Strength ratio:</strong> UTS/UCS ≈ <strong>1.23</strong> (≈23% stronger in tension).',
|
||
'proj.hashin.cap1':'Mesh & layup (S4R shells)',
|
||
'proj.hashin.cap2':'Hashin maps - first-ply failure',
|
||
'proj.hashin.cap3':'Tension σ–ε (staged stiffness drops)',
|
||
'proj.hashin.cap4':'Compression σ–ε (staged stiffness drops)',
|
||
'proj.hashin.ch1':'Hashin initiation',
|
||
'proj.hashin.ch2':'[0/±45/0/90]s',
|
||
'proj.hashin.ch3':'UTS 413 MPa',
|
||
'proj.hashin.ch4':'UCS 336 MPa',
|
||
'proj.hashin.ch5':'Ratio ≈ 1.23',
|
||
|
||
'proj.sec19.h4':'Rear Fuselage - Section 19 (Skin & Stringers)',
|
||
'proj.sec19.obj':'<strong>Objective -</strong> Define composite skin and stringer concept, reinforcements, drop-offs, and frame joints (clips, Ø4.8 mm) for a fuselage bay between Frames A–B.',
|
||
'proj.sec19.given':'Given data',
|
||
'proj.sec19.g1':'<strong>Geometry:</strong> cylinder <strong>R = 4500 mm</strong>; frames <strong>550 mm</strong> apart; stringer pitch <strong>150 mm</strong>.',
|
||
'proj.sec19.g2':'<strong>Material:</strong> UD, <strong>CPT 0.184 mm</strong>.',
|
||
'proj.sec19.g3':'<strong>Skin:</strong> base <strong>9 plies (2/4/3)</strong>; reinforcement <strong>14 plies (2/8/4)</strong>, <strong>100 × 70 mm</strong> patch.',
|
||
'proj.sec19.g4':'<strong>Stringers:</strong> <strong>h < 35 mm</strong>, <strong>R ≥ 3 mm</strong>; web <strong>20 plies</strong> (50% 0° / 40% ±45° / 10% 90%); <strong>web = 2× flange</strong>.',
|
||
'proj.sec19.g5':'<strong>Joints:</strong> clips + <strong>Ø 4.8 mm</strong> fasteners.',
|
||
'proj.sec19.li1':'Built the master geometry (frames & stringers on skin), set pitch and feet widths.',
|
||
'proj.sec19.li2':'Mapped skin layups, drop-offs and reinforcement footprint.',
|
||
'proj.sec19.li3':'Sized stringer web/flanges and verified repairability (L1 for Ø4.8 mm).',
|
||
'proj.sec19.li4':'Defined clip joints and prepared drawings, materials list, and panel weight.',
|
||
'proj.sec19.ch1':'R 4500 mm',
|
||
'proj.sec19.ch2':'Pitch 150 mm',
|
||
'proj.sec19.ch3':'UD CPT 0.184 mm',
|
||
'proj.sec19.ch4':'Clips Ø 4.8 mm',
|
||
|
||
'proj.handle.h4':'Handlebar Bracket - AW-2024 T3',
|
||
'proj.handle.obj':'<strong>Objective -</strong> Design a lightweight handlebar bracket within the envelope, compliant with steering/impact/vibration loads, manufacturable by AW-2024 T3.',
|
||
'proj.handle.p2':'<strong>Topology:</strong> compliance target with constraints on clamp stiffness and load paths → smoothed CAD rebuild.',
|
||
'proj.handle.p3':'<strong>Bolts (VDI 2230):</strong> M6 for clamp; torque, preload & checks driven by FEA reactions.',
|
||
'proj.handle.p4':'<strong>Validation (Ansys):</strong> static + fatigue (Goodman); handlebar–clamp contact and surface pressure checks.',
|
||
'proj.handle.r1':'<strong>Safety factors:</strong> ≥ 2 static, ≥ 1 fatigue.',
|
||
'proj.handle.r2':'<strong>Clamp stiffness:</strong> within deflection/rotation limits; max deflection < 1 mm.',
|
||
'proj.handle.ch1':'AW-2024 T3',
|
||
'proj.handle.ch2':'Topology-Optimized',
|
||
'proj.handle.ch3':'VDI 2230 bolts',
|
||
'proj.handle.ch4':'Clamp OK',
|
||
'proj.handle.ch5':'Deflection < 1 mm',
|
||
|
||
'proj.drone.h4':'Composite drone structure',
|
||
'proj.drone.obj':'<strong>Objective -</strong> Define laminate schedule and thicknesses to minimize weight while maintaining stiffness and strength on a composite drone frame, with harmonic and impact checks on critical members.',
|
||
'proj.drone.li1':'Selected laminate families for arms and central plate (ply angles, stacking rules, symmetry/balance).',
|
||
'proj.drone.li2':'Ran <strong>thickness optimization</strong> under flight-load envelopes (hover, maneuver, landing).',
|
||
'proj.drone.li3':'Built FEM and extracted <strong>harmonic response</strong> to avoid resonance near rotor frequencies.',
|
||
'proj.drone.li4':'Performed <strong>impact scenarios</strong> on weak spots (arm-hub joints, landing edges).',
|
||
'proj.drone.r1':'Weight reduction vs baseline while keeping <strong>MS ≥ 0</strong> in static checks.',
|
||
'proj.drone.r2':'Minimum separation to rotor-induced frequencies achieved.',
|
||
'proj.drone.r3':'Local reinforcements added only where needed after impact assessment.',
|
||
'proj.drone.ch1':'Layup Optimization',
|
||
'proj.drone.ch2':'Harmonic Check',
|
||
'proj.drone.ch3':'Impact FEM',
|
||
'proj.drone.ch4':'MS ≥ 0'
|
||
},
|
||
|
||
/* =========================
|
||
DEUTSCH
|
||
========================= */
|
||
de: {
|
||
'cta.downloadCv': '⬇️ Lebenslauf herunterladen',
|
||
'cta.downloadCv@title': 'Lebenslauf herunterladen',
|
||
'nav.about':'Über mich',
|
||
'nav.experience':'Erfahrung',
|
||
'nav.projects':'Projekte',
|
||
'nav.education':'Ausbildung',
|
||
'nav.skills':'Fähigkeiten',
|
||
'nav.contact':'Kontakt',
|
||
|
||
'hero.role':'Strukturingenieur',
|
||
'hero.blurb':'Maschinenbauingenieur mit Leidenschaft für Luft- und Raumfahrt sowie Advanced Manufacturing; Entwicklung von Strukturbauteilen vom Konzept bis zur FEM-Validierung. Fokus auf Verbundwerkstoffe, CAD, FEA und explizite Simulationen.',
|
||
|
||
'availability.title':'Verfügbarkeit',
|
||
'availability.text':'Derzeit bei Airbus (Vertrag bis Dez 2025). Ab Januar 2026 verfügbar.',
|
||
'availability.location':'Madrid, Spanien · DE IT ES UK',
|
||
|
||
'keycompetencies.title':'Kernkompetenzen',
|
||
'keycompetencies.damageTolerance':'Schadenstoleranz',
|
||
'keycompetencies.buckling':'Beulen & Vordimensionierung',
|
||
'keycompetencies.impact':'Aufprall & Energieaufnahme',
|
||
'keycompetencies.drawing':'Zeichnungen & GD&T',
|
||
'keycompetencies.data':'Datenanalyse',
|
||
|
||
'sections.experience':'Erfahrung',
|
||
'sections.projects':'Akademische Projekte',
|
||
'sections.education':'Ausbildung',
|
||
'sections.skills':'Fähigkeiten',
|
||
'sections.contact':'Kontakt',
|
||
|
||
'projects.card.stiff.title':'Versteifte Verbundpaneele',
|
||
'projects.card.stiff.teaser':'Beul- & Schadenstoleranzprüfungen, Layup-Optimierung (Skin & Stringer), Durchbiegungsprüfung. <span class="where">UPM · Feb–Mai 2025</span>',
|
||
'projects.card.hashin.title':'Verbundlaminat - Hashin (Abaqus)',
|
||
'projects.card.hashin.teaser':'UD-Laminat Zug vs. Druck; ply-by-ply Versagen mit Hashin; FEM-gestützte Analyse. <span class="where">UPM · Jan–Mär 2025</span>',
|
||
'projects.card.sec19.title':'Heckrumpf - Sektion 19 (Skin & Stringers)',
|
||
'projects.card.sec19.teaser':'Skin-Laminat & Stringer-Konzept, Drop-offs, Verstärkungen, Rahmenverbindungen (Clips, Ø4,8 mm). <span class="where">UPM · Jan–Mär 2024</span>',
|
||
'projects.card.handlebar.title':'Lenkerhalterung - AW-2024 T3',
|
||
'projects.card.handlebar.teaser':'Topologieoptimierung, Klemmen- & VDI-2230-Schraubennachweise, statische/Ermüdungs-Validierung (Ansys), Gewichtsminimierung. <span class="where">Unibo · Sep–Dez 2024</span>',
|
||
'projects.card.drone.title':'Verbund-Drone-Struktur',
|
||
'projects.card.drone.teaser':'Laminatdefinition, Dickenoptimierung, harmonische & Schlag-FEM. <span class="where">Unibo · Feb–Jun 2023</span>',
|
||
|
||
'skills.software':'Software',
|
||
'skills.data':'Datenanalyse: Excel, Python',
|
||
'skills.soft':'Soft Skills',
|
||
'skills.teamwork':'Teamarbeit',
|
||
'skills.adapt':'Anpassungsfähigkeit',
|
||
'skills.creative':'Kreatives Problemlösen',
|
||
'skills.langs':'Sprachen',
|
||
'lang.it':'Italienisch - Muttersprache',
|
||
'lang.es':'Spanisch - Fließend (C2)',
|
||
'lang.en':'Englisch - Fließend (C1)',
|
||
'lang.de':'Deutsch - Grundkenntnisse (A1)',
|
||
|
||
'contact.cta':'Interesse an einer Zusammenarbeit oder CV in anderem Format? Kontaktieren Sie mich.',
|
||
'contact.locationTitle':'Aktueller Standort:',
|
||
'contact.viewmap':'Größere Karte anzeigen',
|
||
'contact.hoursTitle':'Kontaktzeiten (Madrid):',
|
||
'contact.hours.weekdays':'Montag – Freitag: 09:00 – 19:00',
|
||
'contact.hours.saturday':'Samstag: 09:00 – 19:00',
|
||
'contact.hours.sunday':'Sonntag: 09:00 – 12:00',
|
||
|
||
'footer.updated':'Letzte Aktualisierung:',
|
||
'modal.title':'Projektdetails',
|
||
'modal.close':'Schließen',
|
||
|
||
'exp.airbus.title':'AIRBUS - Structural Design & Analysis Engineer',
|
||
'exp.airbus.where':'Madrid, ES',
|
||
'exp.airbus.p1':'Entwicklung und Bewertung von <strong>Reparaturlösungen</strong> für Verbund- und Metallbauteile.',
|
||
'exp.airbus.p2':'Teilekonstruktion für <strong>A350 HTP</strong> und <strong>Sektion 19</strong> (Heckrumpf) in <strong>CATIA V5</strong>.',
|
||
'exp.airbus.p3':'Schnittstelle Design Office in der Produktion; Sicherstellung von Strukturintegrität und Compliance.',
|
||
'exp.airbus.p4':'Entwicklung von <strong>numerischen Modellen</strong> und expliziten Simulationen zu Schadensmechanismen in Verbundwerkstoffen in Abaqus.',
|
||
|
||
'exp.dlr.title':'DLR - Masterarbeit · R&D Engineer',
|
||
'exp.dlr.where':'Stuttgart, DE',
|
||
'exp.dlr.p1':'Arbeit für das EU-Projekt <strong>r-LightBioCom</strong> zu nachhaltigen Hochleistungsverbunden für Automotive/Aerospace.',
|
||
'exp.dlr.p2':'Berechnung des Umweltfußabdrucks je 1 kg Material in <strong>openLCA</strong>.',
|
||
'exp.dlr.p3':'<strong>Quasi-statische & dynamische</strong> Druckversuche an Kernen (Wabe/Schaum) und <strong>KPI</strong> aus <em>LCA</em> und Mechanik.',
|
||
'exp.dlr.p4':'Implementierung und Kalibrierung von <strong>LS-DYNA MAT-Karten</strong> aus Testdaten.',
|
||
'exp.dlr.p5':'<strong>FEM</strong> statisch/dynamisch zur Validierung der Versuche.',
|
||
|
||
'exp.unibo.title':'UniBo Motorsport - Stress & Design Engineer',
|
||
'exp.unibo.where':'Bologna, IT',
|
||
'exp.unibo.p1':'<strong>Konstruktion</strong> und <strong>Spannungsanalyse</strong> (Monocoqueformen, Armaturenbrettträger, Fahrergurt).',
|
||
'exp.unibo.p2':'<strong>FEM</strong> am CFRP-Chassis unter Mehrfachlasten; Untersuchung von Delaminationen.',
|
||
|
||
'exp.dvp.title':'D.V.P. Vacuum Technology - Bachelorarbeit · R&D Engineer',
|
||
'exp.dvp.where':'Bologna, IT',
|
||
'exp.dvp.p1':'Versuchsreihen zu Durchsätzen und Druckverlusten in Turbinen und Ventilen.',
|
||
'exp.dvp.p2':'Erstellung von <strong>Leistungskennfeldern</strong> in <strong>GT-Suite</strong> und Modellvalidierung.',
|
||
|
||
'exp.cpc.title':'CPC Group - Composite Laminator',
|
||
'exp.cpc.where':'Modena, IT',
|
||
'exp.cpc.p1':'Laminieren von <strong>CFRP</strong>-Formen und eines Chassis für das Formula-SAE-Team.',
|
||
|
||
'proj.common.what':'Was ich gemacht habe',
|
||
'proj.common.model':'Modell',
|
||
'proj.common.tools':'Werkzeuge',
|
||
'proj.common.results':'Ergebnisse',
|
||
'proj.common.process':'Prozess',
|
||
'proj.common.download':'📄 Bericht herunterladen',
|
||
|
||
'proj.stiff.h4':'Versteifte Verbundpaneele',
|
||
'proj.stiff.obj':'<strong>Ziel -</strong> CFRP-Paneele mit Stringern auslegen und validieren, Gewicht minimieren und Beul-/Schadenstoleranz-Anforderungen erfüllen.',
|
||
'proj.stiff.li1':'<strong>Layups</strong> für Skin und Stringer definiert (Symmetrie, Balance, Lagenanteile).',
|
||
'proj.stiff.li2':'Verstärkungen <strong>vordimensioniert</strong> und <strong>lokales/globales Beulen</strong> sowie <strong>Stringer-Crippling</strong> geprüft.',
|
||
'proj.stiff.li3':'<strong>Durchbiegungen</strong> und <strong>Safety Margins (MS)</strong> gegen Anforderungen überprüft.',
|
||
'proj.stiff.li4':'<strong>Dickenoptimierung</strong> (Gewicht vs. Steifigkeit/Stabilität) mit FEM-Feedback.',
|
||
'proj.stiff.li5':'<strong>Beulmoden</strong> genutzt, um Redesign-Iterationen zu steuern.',
|
||
'proj.stiff.tools':'Berechnungen von Hand; Ingenieur-Spreadsheets; Luftfahrt-Laminatregeln.',
|
||
'proj.stiff.r1':'Gewichtsreduktion: <strong>≈ X–Y %</strong>.',
|
||
'proj.stiff.r2':'<strong>MS ≥ 0</strong> für Beulen und Crippling in kritischen Lastfällen.',
|
||
'proj.stiff.r3':'<strong>Durchbiegungen ≤</strong> Grenzwert.',
|
||
'proj.stiff.cap1':'Übersicht Paneel & Stringer',
|
||
'proj.stiff.cap2':'Beulmoden 1–3 (FEM)',
|
||
'proj.stiff.cap3':'Layup- & Dickentabelle',
|
||
'proj.stiff.ch1':'Beulen & Crippling',
|
||
'proj.stiff.ch2':'Optimiertes Layup',
|
||
'proj.stiff.ch3':'FEM-getrieben',
|
||
'proj.stiff.ch4':'MS ≥ 0',
|
||
|
||
'proj.hashin.h4':'Verbundlaminat - Hashin (Abaqus)',
|
||
'proj.hashin.obj':'<strong>Ziel -</strong> UD-Laminat unter Zug und Druck mit <em>Hashin-Schadenseinleitung</em> simulieren, ply-by-ply-Versagen identifizieren und Zug- vs. Drucktragfähigkeit vergleichen.',
|
||
'proj.hashin.m1':'Probekörper: <strong>100 × 20 mm</strong>, <strong>10 Lagen × 0,25 mm = 2,5 mm</strong>; symmetrisches Layup <strong>[0°, ±45°, 0°, 90°]s</strong>.',
|
||
'proj.hashin.m2':'Elemente: <strong>S4R</strong> Schalenelemente (~2 mm); Material: UD-Lage mit elastischen + Hashin-Parametern.',
|
||
'proj.hashin.m3':'Randbedingungen/Last: unten eingespannt; obere Kante an RP gekoppelt mit vorgeschriebener Y-Verschiebung.',
|
||
'proj.hashin.m4':'Schadensmodell: <strong>Hashin-Initiation</strong> (keine Evolution). Outputs: HSNFTCRT, HSNFCCRT, HSNMTCRT, HSNMCCRT.',
|
||
'proj.hashin.r1':'<strong>Zug:</strong> 90° Matrix-Zug → ±45° Matrix-Schub → 0° Faser-Zug; <strong>UTS ≈ 413 MPa</strong>.',
|
||
'proj.hashin.r2':'<strong>Druck:</strong> ±45° Matrix-Druck → 90° Matrix-Druck → 0° Faser-Druck; <strong>UCS ≈ 336 MPa</strong>.',
|
||
'proj.hashin.r3':'<strong>Verhältnis:</strong> UTS/UCS ≈ <strong>1,23</strong> (≈23 % stärker in Zug).',
|
||
'proj.hashin.cap1':'Mesh & Layup (S4R-Schalen)',
|
||
'proj.hashin.cap2':'Hashin-Karten - First-Ply-Failure',
|
||
'proj.hashin.cap3':'Zug σ–ε (stufenweise Steifigkeitsabfälle)',
|
||
'proj.hashin.cap4':'Druck σ–ε (stufenweise Steifigkeitsabfälle)',
|
||
'proj.hashin.ch1':'Hashin-Initiation',
|
||
'proj.hashin.ch2':'[0/±45/0/90]s',
|
||
'proj.hashin.ch3':'UTS 413 MPa',
|
||
'proj.hashin.ch4':'UCS 336 MPa',
|
||
'proj.hashin.ch5':'Verhältnis ≈ 1,23',
|
||
|
||
'proj.sec19.h4':'Heckrumpf - Sektion 19 (Skin & Stringers)',
|
||
'proj.sec19.obj':'<strong>Ziel -</strong> Skin- und Stringer-Konzept in Verbundbauweise festlegen, Verstärkungen, Drop-offs und Rahmenverbindungen (Clips, Ø4,8 mm) für ein Rumpffeld zwischen Rahmen A–B.',
|
||
'proj.sec19.given':'Gegebene Daten',
|
||
'proj.sec19.g1':'<strong>Geometrie:</strong> Zylinder <strong>R = 4500 mm</strong>; Rahmenabstand <strong>550 mm</strong>; Stringer-Pitch <strong>150 mm</strong>.',
|
||
'proj.sec19.g2':'<strong>Material:</strong> UD, <strong>CPT 0,184 mm</strong>.',
|
||
'proj.sec19.g3':'<strong>Skin:</strong> Basis <strong>9 Lagen (2/4/3)</strong>; Verstärkung <strong>14 Lagen (2/8/4)</strong>, Patch <strong>100 × 70 mm</strong>.',
|
||
'proj.sec19.g4':'<strong>Stringer:</strong> <strong>h < 35 mm</strong>, <strong>R ≥ 3 mm</strong>; Steg <strong>20 Lagen</strong> (50 % 0° / 40 % ±45° / 10 % 90 %); <strong>Steg = 2× Flansch</strong>.',
|
||
'proj.sec19.g5':'<strong>Verbindungen:</strong> Clips + <strong>Ø 4,8 mm</strong> Befestiger.',
|
||
'proj.sec19.li1':'Mastergeometrie (Rahmen & Stringer auf der Skin), Pitch und Fußbreiten erstellt.',
|
||
'proj.sec19.li2':'Skin-Layups, Drop-offs und Verstärkungs-Footprint kartiert.',
|
||
'proj.sec19.li3':'Stringer-Steg/Flansche dimensioniert und Reparierbarkeit (L1 für Ø4,8 mm) geprüft.',
|
||
'proj.sec19.li4':'Clip-Verbindungen definiert, Zeichnungen, Materialliste und Paneelgewicht vorbereitet.',
|
||
'proj.sec19.ch1':'R 4500 mm',
|
||
'proj.sec19.ch2':'Pitch 150 mm',
|
||
'proj.sec19.ch3':'UD CPT 0,184 mm',
|
||
'proj.sec19.ch4':'Clips Ø 4,8 mm',
|
||
|
||
'proj.handle.h4':'Lenkerhalterung - AW-2024 T3',
|
||
'proj.handle.obj':'<strong>Ziel -</strong> Leichte Lenkerhalterung innerhalb der Hüllkurve, konform zu Lenk-/Schlag-/Vibrationslasten, herstellbar per AW-2024 T3.',
|
||
'proj.handle.p2':'<strong>Topologie:</strong> Compliance-Ziel mit Randbedingungen zur Klemmensteifigkeit & Lastpfaden → geglätteter CAD-Rebuild.',
|
||
'proj.handle.p3':'<strong>Schrauben (VDI 2230):</strong> M6 für Klemme; Drehmoment, Vorspannung & Nachweise aus FEM-Reaktionen.',
|
||
'proj.handle.p4':'<strong>Validierung (Ansys):</strong> statisch + Ermüdung (Goodman); Kontakt Lenker–Klemme und Flächendrücke.',
|
||
'proj.handle.r1':'<strong>Sicherheitsfaktoren:</strong> ≥ 2 statisch, ≥ 1 Ermüdung.',
|
||
'proj.handle.r2':'<strong>Klemmensteifigkeit:</strong> innerhalb der Durchbiegungs-/Rotationsgrenzen; maximale Durchbiegung < 1 mm.',
|
||
'proj.handle.ch1':'AW-2024 T3',
|
||
'proj.handle.ch2':'Topologie-optimiert',
|
||
'proj.handle.ch3':'VDI 2230',
|
||
'proj.handle.ch4':'Klemme OK',
|
||
'proj.handle.ch5':'Durchbiegung < 1 mm',
|
||
|
||
'proj.drone.h4':'Verbund-Drone-Struktur',
|
||
'proj.drone.obj':'<strong>Ziel -</strong> Laminataufbau und Dicken zur Gewichtsminimierung bei ausreichender Steifigkeit/Festigkeit festlegen; harmonische und Schlagprüfungen an kritischen Bauteilen.',
|
||
'proj.drone.li1':'Laminatfamilien für Arme und Mittelplatte (Lagenwinkel, Stapelregeln, Symmetrie/Balanz) ausgewählt.',
|
||
'proj.drone.li2':'<strong>Dickenoptimierung</strong> über Fluglast-Hüllkurven (Hover, Manöver, Landung).',
|
||
'proj.drone.li3':'FEM aufgebaut und <strong>harmonische Antwort</strong> extrahiert, Resonanznähe zu Rotorfrequenzen vermieden.',
|
||
'proj.drone.li4':'<strong>Schlagszenarien</strong> an Schwachstellen (Arm-Nabe, Landekanten) bewertet.',
|
||
'proj.drone.r1':'Gewichtsreduktion ggü. Basis bei <strong>MS ≥ 0</strong> in statischen Nachweisen.',
|
||
'proj.drone.r2':'Mindestabstand zu rotorinduzierten Frequenzen erreicht.',
|
||
'proj.drone.r3':'Lokale Verstärkungen nur bei Bedarf nach Schlagbewertung hinzugefügt.',
|
||
'proj.drone.ch1':'Layup-Optimierung',
|
||
'proj.drone.ch2':'Harmonische Prüfung',
|
||
'proj.drone.ch3':'Schlag-FEM',
|
||
'proj.drone.ch4':'MS ≥ 0'
|
||
},
|
||
|
||
/* =========================
|
||
ESPAÑOL
|
||
========================= */
|
||
es: {
|
||
'cta.downloadCv': '⬇️ Descargar CV',
|
||
'cta.downloadCv@title': 'Descargar CV',
|
||
'nav.about':'Sobre mí',
|
||
'nav.experience':'Experiencia',
|
||
'nav.projects':'Proyectos',
|
||
'nav.education':'Educación',
|
||
'nav.skills':'Habilidades',
|
||
'nav.contact':'Contacto',
|
||
|
||
'hero.role':'Ingeniero Estructural',
|
||
'hero.blurb':'Ingeniero mecánico apasionado por el sector aeroespacial y la fabricación avanzada, especializado en desarrollar componentes estructurales desde el concepto hasta la validación FEM. Enfoque en materiales compuestos, CAD, FEA y simulaciones explícitas.',
|
||
|
||
'availability.title':'Disponibilidad',
|
||
'availability.text':'Actualmente en Airbus (contrato hasta dic 2025). Disponible para un nuevo rol desde enero de 2026.',
|
||
'availability.location':'Madrid, España · DE IT ES UK',
|
||
|
||
'keycompetencies.title':'Competencias clave',
|
||
'keycompetencies.damageTolerance':'Tolerancia al daño',
|
||
'keycompetencies.buckling':'Pandeo & pre-dimensionado',
|
||
'keycompetencies.impact':'Impacto & absorción de energía',
|
||
'keycompetencies.drawing':'Planos & GD&T',
|
||
'keycompetencies.data':'Análisis de datos',
|
||
|
||
'sections.experience':'Experiencia',
|
||
'sections.projects':'Proyectos Académicos',
|
||
'sections.education':'Educación',
|
||
'sections.skills':'Habilidades',
|
||
'sections.contact':'Contacto',
|
||
|
||
'projects.card.stiff.title':'Paneles compuestos rigidizados',
|
||
'projects.card.stiff.teaser':'Verificaciones de pandeo y tolerancia al daño, optimización de layup (skin & stringers), verificación de flechas. <span class="where">UPM · Feb–May 2025</span>',
|
||
'projects.card.hashin.title':'Laminado compuesto - Hashin (Abaqus)',
|
||
'projects.card.hashin.teaser':'Laminado UD a tracción vs compresión; fallo ply-by-ply con Hashin; análisis FEM. <span class="where">UPM · Ene–Mar 2025</span>',
|
||
'projects.card.sec19.title':'Sección 19 del fuselaje trasero (Skin & Stringers)',
|
||
'projects.card.sec19.teaser':'Skin laminate y concepto de stringers, drop-offs, refuerzos, uniones a marcos (clips, Ø4,8 mm). <span class="where">UPM · Ene–Mar 2024</span>',
|
||
'projects.card.handlebar.title':'Soporte de manillar - AW-2024 T3',
|
||
'projects.card.handlebar.teaser':'Optimización topológica, verificación de mordaza y tornillería VDI 2230, validación estática/fatiga (Ansys), minimización de peso. <span class="where">Unibo · Sep–Dic 2024</span>',
|
||
'projects.card.drone.title':'Estructura de dron compuesta',
|
||
'projects.card.drone.teaser':'Definición de laminado, optimización de espesores, análisis armónico y de impacto FEM. <span class="where">Unibo · Feb–Jun 2023</span>',
|
||
|
||
'skills.software':'Software',
|
||
'skills.data':'Análisis de datos: Excel, Python',
|
||
'skills.soft':'Soft Skills',
|
||
'skills.teamwork':'Trabajo en equipo',
|
||
'skills.adapt':'Adaptabilidad',
|
||
'skills.creative':'Resolución creativa de problemas',
|
||
'skills.langs':'Idiomas',
|
||
'lang.it':'Italiano - Nativo',
|
||
'lang.es':'Español - Fluido (C2)',
|
||
'lang.en':'Inglés - Fluido (C1)',
|
||
'lang.de':'Alemán - Básico (A1)',
|
||
|
||
'contact.cta':'¿Colaboramos o necesitas el CV en otro formato? Escríbeme.',
|
||
'contact.locationTitle':'Ubicación actual:',
|
||
'contact.viewmap':'Ver mapa ampliado',
|
||
'contact.hoursTitle':'Horario de contacto (Madrid):',
|
||
'contact.hours.weekdays':'Lunes - Viernes: 09:00 - 19:00',
|
||
'contact.hours.saturday':'Sábado: 09:00 - 19:00',
|
||
'contact.hours.sunday':'Domingo: 09:00 - 12:00',
|
||
|
||
'footer.updated':'Última actualización:',
|
||
'modal.title':'Detalles del proyecto',
|
||
'modal.close':'Cerrar',
|
||
|
||
'exp.airbus.title':'AIRBUS - Structural Design & Analysis Engineer',
|
||
'exp.airbus.where':'Madrid, ES',
|
||
'exp.airbus.p1':'Desarrollo y evaluación de <strong>reparaciones</strong> para componentes compuestos y metálicos.',
|
||
'exp.airbus.p2':'Diseño de piezas para <strong>A350 HTP</strong> y <strong>Sección 19</strong> (fuselaje trasero) en <strong>CATIA V5</strong>.',
|
||
'exp.airbus.p3':'Interfaz con Design Office en producción, garantizando integridad estructural y cumplimiento.',
|
||
'exp.airbus.p4':'Desarrollo de <strong>modelos numéricos</strong> y simulaciones explícitas de daño en compuestos in Abaqus.',
|
||
|
||
'exp.dlr.title':'DLR - Tesis de Máster · R&D Engineer',
|
||
'exp.dlr.where':'Stuttgart, DE',
|
||
'exp.dlr.p1':'Tesis para el proyecto UE <strong>r-LightBioCom</strong> sobre compuestos sostenibles de alto rendimiento para automoción/aeroespacio.',
|
||
'exp.dlr.p2':'Huella ambiental por 1 kg de material con <strong>openLCA</strong>.',
|
||
'exp.dlr.p3':'Ensayos de compresión <strong>quasi-estáticos y dinámicos</strong> en núcleos (panal/espuma) y <strong>KPI</strong> combinando <em>LCA</em> y prestaciones mecánicas.',
|
||
'exp.dlr.p4':'Implementación y calibración de <strong>cartas MAT</strong> en <strong>LS-DYNA</strong> a partir de ensayos.',
|
||
'exp.dlr.p5':'Análisis <strong>FEM</strong> estáticos/dinámicos para validar los resultados.',
|
||
|
||
'exp.unibo.title':'UniBo Motorsport - Stress & Design Engineer',
|
||
'exp.unibo.where':'Bolonia, IT',
|
||
'exp.unibo.p1':'<strong>Diseño</strong> y <strong>análisis de tensiones</strong> (moldes de monocasco, soporte de salpicadero, arnés).',
|
||
'exp.unibo.p2':'<strong>FEM</strong> en chasis CFRP con múltiples cargas; investigación de delaminaciones.',
|
||
|
||
'exp.dvp.title':'D.V.P. Vacuum Technology - Tesis de Grado · R&D Engineer',
|
||
'exp.dvp.where':'Bolonia, IT',
|
||
'exp.dvp.p1':'Campañas experimentales sobre caudales y pérdidas de carga en turbinas y válvulas.',
|
||
'exp.dvp.p2':'Desarrollo de <strong>mapas de rendimiento</strong> en <strong>GT-Suite</strong> y validación del modelo.',
|
||
|
||
'exp.cpc.title':'CPC Group - Composite Laminator',
|
||
'exp.cpc.where':'Módena, IT',
|
||
'exp.cpc.p1':'Laminación de moldes <strong>CFRP</strong> y de un chasis para el equipo de Formula SAE.',
|
||
|
||
'proj.common.what':'Qué hice',
|
||
'proj.common.model':'Modelo',
|
||
'proj.common.tools':'Herramientas',
|
||
'proj.common.results':'Resultados',
|
||
'proj.common.process':'Proceso',
|
||
'proj.common.download':'📄 Descargar informe',
|
||
|
||
'proj.stiff.h4':'Paneles compuestos rigidizados',
|
||
'proj.stiff.obj':'<strong>Objetivo -</strong> Diseñar y validar paneles CFRP con rigidizadores, minimizando peso y cumpliendo requisitos de pandeo y tolerancia al daño.',
|
||
'proj.stiff.li1':'Definí <strong>layups</strong> para piel y stringers (simetría, balance, porcentajes de capas).',
|
||
'proj.stiff.li2':'<strong>Pre-dimensioné</strong> refuerzos y verifiqué <strong>pandeo local/global</strong> y <strong>crippling</strong> de stringers.',
|
||
'proj.stiff.li3':'Comprobé <strong>flechas</strong> y <strong>márgenes de seguridad (MS)</strong> vs requisitos.',
|
||
'proj.stiff.li4':'Realicé <strong>optimización de espesores</strong> (peso vs rigidez/estabilidad) con feedback FEM.',
|
||
'proj.stiff.li5':'Usé <strong>modos de pandeo</strong> para guiar iteraciones de rediseño.',
|
||
'proj.stiff.tools':'Calculos a mano; hojas de cálculo de ingeniería; reglas aeronáuticas de laminado.',
|
||
'proj.stiff.r1':'Reducción de peso: <strong>≈ X–Y %</strong>.',
|
||
'proj.stiff.r2':'<strong>MS ≥ 0</strong> para pandeo y crippling en casos críticos.',
|
||
'proj.stiff.r3':'<strong>Flechas ≤</strong> límite especificado.',
|
||
'proj.stiff.cap1':'Vista de panel & rigidizadores',
|
||
'proj.stiff.cap2':'Modos de pandeo 1–3 (FEM)',
|
||
'proj.stiff.cap3':'Tabla de layup & espesores',
|
||
'proj.stiff.ch1':'Pandeo & Crippling',
|
||
'proj.stiff.ch2':'Layup optimizado',
|
||
'proj.stiff.ch3':'Impulsado por FEM',
|
||
'proj.stiff.ch4':'MS ≥ 0',
|
||
|
||
'proj.hashin.h4':'Laminado compuesto - Hashin (Abaqus)',
|
||
'proj.hashin.obj':'<strong>Objetivo -</strong> Simular un laminado UD a tracción y compresión con <em>inicio de daño Hashin</em> para identificar fallo ply-by-ply y comparar capacidad a tracción vs compresión.',
|
||
'proj.hashin.m1':'Probeta: <strong>100 × 20 mm</strong>, <strong>10 capas × 0,25 mm = 2,5 mm</strong>; layup simétrico <strong>[0°, ±45°, 0°, 90°]s</strong>.',
|
||
'proj.hashin.m2':'Elementos: <strong>S4R</strong> de cascarón (~2 mm); material: lamina UD con elástico + parámetros Hashin.',
|
||
'proj.hashin.m3':'BC/Carga: borde inferior empotrado; borde superior acoplado a RP con desplazamiento prescrito en Y.',
|
||
'proj.hashin.m4':'Modelo de daño: <strong>Hashin initiation</strong> (sin evolución). Salidas: HSNFTCRT, HSNFCCRT, HSNMTCRT, HSNMCCRT.',
|
||
'proj.hashin.r1':'<strong>Tracción:</strong> 90° matriz-tracción → ±45° matriz-corte → 0° fibra-tracción; <strong>UTS ≈ 413 MPa</strong>.',
|
||
'proj.hashin.r2':'<strong>Compresión:</strong> ±45° matriz-compresión → 90° matriz-compresión → 0° fibra-compresión; <strong>UCS ≈ 336 MPa</strong>.',
|
||
'proj.hashin.r3':'<strong>Relación:</strong> UTS/UCS ≈ <strong>1,23</strong> (≈23 % más fuerte a tracción).',
|
||
'proj.hashin.cap1':'Malla & layup (S4R cascarón)',
|
||
'proj.hashin.cap2':'Mapas Hashin - first-ply failure',
|
||
'proj.hashin.cap3':'σ–ε tracción (caídas escalonadas de rigidez)',
|
||
'proj.hashin.cap4':'σ–ε compresión (caídas escalonadas de rigidez)',
|
||
'proj.hashin.ch1':'Hashin initiation',
|
||
'proj.hashin.ch2':'[0/±45/0/90]s',
|
||
'proj.hashin.ch3':'UTS 413 MPa',
|
||
'proj.hashin.ch4':'UCS 336 MPa',
|
||
'proj.hashin.ch5':'Relación ≈ 1,23',
|
||
|
||
'proj.sec19.h4':'Sección 19 del fuselaje trasero (Skin & Stringers)',
|
||
'proj.sec19.obj':'<strong>Objetivo -</strong> Definir skin y stringers en compuesto, refuerzos, drop-offs y uniones a marcos (clips, Ø4,8 mm) para un panel entre marcos A–B.',
|
||
'proj.sec19.given':'Datos de base',
|
||
'proj.sec19.g1':'<strong>Geometría:</strong> cilindro <strong>R = 4500 mm</strong>; marcos a <strong>550 mm</strong>; pitch de stringer <strong>150 mm</strong>.',
|
||
'proj.sec19.g2':'<strong>Material:</strong> UD, <strong>CPT 0.184 mm</strong>.',
|
||
'proj.sec19.g3':'<strong>Skin:</strong> base <strong>9 capas (2/4/3)</strong>; refuerzo <strong>14 capas (2/8/4)</strong>, parche <strong>100 × 70 mm</strong>.',
|
||
'proj.sec19.g4':'<strong>Stringers:</strong> <strong>h < 35 mm</strong>, <strong>R ≥ 3 mm</strong>; alma <strong>20 capas</strong> (50% 0° / 40% ±45° / 10% 90°); <strong>alma = 2× ala</strong>.',
|
||
'proj.sec19.g5':'<strong>Uniones:</strong> clips + <strong>Ø 4.8 mm</strong> tornillería.',
|
||
'proj.sec19.li1':'Geometría master (marcos & stringers sobre la skin), pitch y pies.',
|
||
'proj.sec19.li2':'Mapeado de layups de skin, drop-offs y footprint de refuerzo.',
|
||
'proj.sec19.li3':'Dimensionado de alma/alas de stringer y verificación de reparabilidad (L1 con Ø4,8).',
|
||
'proj.sec19.li4':'Definición de clips y preparación de planos, lista de materiales y peso del panel.',
|
||
'proj.sec19.ch1':'R 4500 mm',
|
||
'proj.sec19.ch2':'Pitch 150 mm',
|
||
'proj.sec19.ch3':'UD CPT 0.184 mm',
|
||
'proj.sec19.ch4':'Clips Ø 4.8 mm'
|
||
}
|
||
};
|
||
|
||
let currentLang = DEFAULT_LANG;
|
||
|
||
function resolveKey(key, lang){
|
||
const order = [lang, 'en', DEFAULT_LANG];
|
||
for(const L of order){
|
||
if(t[L] && typeof t[L][key] === 'string') return t[L][key];
|
||
}
|
||
return null;
|
||
}
|
||
|
||
function applyNodeTranslation(node, value){
|
||
if(node.hasAttribute('data-i18n-html')) node.innerHTML = value;
|
||
else node.innerHTML = value;
|
||
}
|
||
|
||
function translateAttributes(node, key, lang){
|
||
const attr = node.getAttribute('data-i18n-attr');
|
||
if(!attr) return;
|
||
const k = key + '@' + attr;
|
||
const v = resolveKey(k, lang);
|
||
if(v) node.setAttribute(attr, v);
|
||
}
|
||
|
||
function translatePage(lang){
|
||
currentLang = lang;
|
||
document.documentElement.setAttribute('lang', lang);
|
||
|
||
document.querySelectorAll('[data-i18n],[data-i18n-html]').forEach(el=>{
|
||
const key = el.getAttribute('data-i18n') || el.getAttribute('data-i18n-html');
|
||
const val = resolveKey(key, lang);
|
||
if(typeof val === 'string'){
|
||
applyNodeTranslation(el, val);
|
||
}
|
||
translateAttributes(el, key, lang);
|
||
});
|
||
}
|
||
|
||
// API globale per ri-applicare la traduzione (usata anche dai modali)
|
||
window.__i18n = {
|
||
getLang: ()=>currentLang,
|
||
apply: ()=>translatePage(currentLang),
|
||
set: (lang)=>{ localStorage.setItem(STORAGE_KEY, lang); translatePage(lang); updateLangUI(lang); }
|
||
};
|
||
|
||
// ====== UI CUSTOM DROPDOWN ======
|
||
const langBtn = document.getElementById('langBtn');
|
||
const langMenu = document.getElementById('langMenu');
|
||
const langSwitcher = document.getElementById('langSwitcher');
|
||
const flagEl = document.getElementById('langFlag');
|
||
const codeEl = document.getElementById('langCode');
|
||
|
||
const flags = { it:'🇮🇹', en:'🇬🇧', de:'🇩🇪', es:'🇪🇸' };
|
||
|
||
function updateLangUI(lang){
|
||
flagEl.textContent = flags[lang] || '🌐';
|
||
codeEl.textContent = (lang || 'it').toUpperCase();
|
||
langMenu.querySelectorAll('.lang-option').forEach(o=>{
|
||
o.setAttribute('aria-selected', o.dataset.lang === lang ? 'true' : 'false');
|
||
});
|
||
}
|
||
|
||
function openMenu(){
|
||
langMenu.classList.add('open');
|
||
langBtn.setAttribute('aria-expanded','true');
|
||
langMenu.focus();
|
||
}
|
||
function closeMenu(){
|
||
langMenu.classList.remove('open');
|
||
langBtn.setAttribute('aria-expanded','false');
|
||
}
|
||
|
||
langBtn.addEventListener('click', ()=>{
|
||
const open = langMenu.classList.contains('open');
|
||
if(open) closeMenu(); else openMenu();
|
||
});
|
||
|
||
// Click su opzioni
|
||
langMenu.addEventListener('click', (e)=>{
|
||
const opt = e.target.closest('.lang-option');
|
||
if(!opt) return;
|
||
const lang = opt.dataset.lang;
|
||
window.__i18n.set(lang);
|
||
closeMenu();
|
||
langBtn.focus();
|
||
});
|
||
|
||
// Tastiera su menu (ESC / frecce / invio)
|
||
langMenu.addEventListener('keydown', (e)=>{
|
||
const opts = Array.from(langMenu.querySelectorAll('.lang-option'));
|
||
const cur = opts.findIndex(o => o.getAttribute('aria-selected')==='true');
|
||
if(e.key==='Escape'){ e.preventDefault(); closeMenu(); langBtn.focus(); }
|
||
if(['ArrowDown','ArrowUp'].includes(e.key)){
|
||
e.preventDefault();
|
||
let i = cur;
|
||
if(e.key==='ArrowDown') i = (cur+1) % opts.length;
|
||
if(e.key==='ArrowUp') i = (cur-1+opts.length) % opts.length;
|
||
opts[i].focus?.();
|
||
}
|
||
if(e.key==='Enter' || e.key===' '){
|
||
e.preventDefault();
|
||
document.activeElement?.click();
|
||
}
|
||
});
|
||
|
||
// Chiudi con click fuori
|
||
document.addEventListener('click', (e)=>{
|
||
if(!langSwitcher.contains(e.target)) closeMenu();
|
||
});
|
||
|
||
// Init lingua (saved / browser / default)
|
||
const saved = localStorage.getItem(STORAGE_KEY);
|
||
const browser = (navigator.language || '').slice(0,2).toLowerCase();
|
||
const initial = saved || (['it','en','de','es'].includes(browser) ? browser : DEFAULT_LANG);
|
||
updateLangUI(initial);
|
||
translatePage(initial);
|
||
})();
|
||
</script>
|
||
|
||
<script>
|
||
// Footer dates
|
||
document.getElementById('year').textContent = new Date().getFullYear();
|
||
document.getElementById('updated').textContent = new Date().toLocaleDateString();
|
||
</script>
|
||
</body>
|
||
</html>
|