PageSourceSearch

https://3mah.github.io/

html 3mah.github.io collected 2026-10-03 08:31:26 UTC 33,098 bytes, 1,041 lines download raw bytes

1<!doctype html>
2<!--
3  Minimal Mistakes Jekyll Theme 4.26.2 by Michael Rose
4  Copyright 2013-2024 Michael Rose - mademistakes.com | @mmistakes
5  Free for personal and commercial use under the MIT license
6  https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
7-->
8
9<html lang="en-US" class="no-js">
10  <head>
11    <meta charset="utf-8">
12
13<!-- begin _includes/seo.html --><title>3MAH — Mechanics of Heterogeneous &amp; Architectured Materials — 3MAH</title>
14<meta name="description" content="Open-source scientific software for mechanics of materials and multiphysics. simcoon (constitutive modeling, micromechanics, UMAT), fedoo (nonlinear finite element analysis, periodic homogenization, PGD), and microgen (TPMS, lattices, polycrystals and microstructure meshing) in a single coherent workflow.">
15
16
17  <meta name="author" content="Yves Chemisky">
18  
19
20
21<meta property="og:type" content="website">
22<meta property="og:locale" content="en_US">
23<meta property="og:site_name" content="3MAH">
24<meta property="og:title" content="3MAH — Mechanics of Heterogeneous &amp; Architectured Materials">
25<meta property="og:url" content="https://3mah.github.io/">
26
27
28  <meta property="og:description" content="Open-source scientific software for mechanics of materials and multiphysics. simcoon (constitutive modeling, micromechanics, UMAT), fedoo (nonlinear finite element analysis, periodic homogenization, PGD), and microgen (TPMS, lattices, polycrystals and microstructure meshing) in a single coherent workflow.">
29
30
31
32  <meta property="og:image" content="https://3mah.github.io/assets/images/index/microgen/tpms_cylinder.png">
33
34
35
36
37
38
39
40
41
42  
43
44  
45
46
47<link rel="canonical" href="https://3mah.github.io/">
48
49
50
51
52
53  
53<script type="application/ld+json">
54{
55  "@context": "https://schema.org",
56  "@type": "Organization",
57    "url": "https://3mah.github.io/",
58    "logo": "https://3mah.github.io/assets/images/index/microgen/tpms_cylinder.png",
59    "sameAs": ["https://github.com/3MAH","https://3mah.github.io/simcoon-docs/","https://3mah.github.io/fedoo-docs/","https://3mah.github.io/microgen-docs/"]
60}
61</script>
61
62
63
64
65
66
67
68
69
70
71<!-- end _includes/seo.html -->
72
73
74
75  <link href="/feed.xml" type="application/atom+xml" rel="alternate" title="3MAH Feed">
76<meta name="viewport" content="width=device-width, initial-scale=1.0">
77
78<script type="text/javascript">
79  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
80  
81</script>
81
82
83<!-- For all browsers -->
84<link rel="stylesheet" href="/assets/css/main.css">
85<link rel="preload" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
86<noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css"></noscript>
87
88
89
90    <!-- start custom head snippets -->
91
92<!-- insert favicons. use http://realfavicongenerator.net/ -->
93
94<!-- Brand colours for section headings (simcoon / fedoo / microgen).
95     Each heading gets a translucent brand-coloured band behind it that
96     fades out at both ends, so the title sits inside its brand colour
97     without dominating the page. -->
98<style>
99  h1.brand-simcoon, h2.brand-simcoon, h3.brand-simcoon,
100  h1.brand-fedoo,   h2.brand-fedoo,   h3.brand-fedoo,
101  h1.brand-microgen,h2.brand-microgen,h3.brand-microgen {
102    padding: 0.45em 0.7em;
103    margin-top: 2em;
104    border-radius: 6px;
105    display: block;
106  }
107  h1.brand-simcoon, h2.brand-simcoon, h3.brand-simcoon {
108    color: #971C20;
109    background: linear-gradient(90deg,
110      rgba(151, 28, 32, 0)    0%,
111      rgba(151, 28, 32, 0.22) 18%,
112      rgba(151, 28, 32, 0.22) 82%,
113      rgba(151, 28, 32, 0)  100%);
114  }
115  h1.brand-fedoo, h2.brand-fedoo, h3.brand-fedoo {
116    color: #1f7a1a;
117    background: linear-gradient(90deg,
118      rgba(47, 161, 44, 0)    0%,
119      rgba(47, 161, 44, 0.22) 18%,
120      rgba(47, 161, 44, 0.22) 82%,
121      rgba(47, 161, 44, 0)  100%);
122  }
123  h1.brand-microgen, h2.brand-microgen, h3.brand-microgen {
124    color: #c45f1a;
125    background: linear-gradient(90deg,
126      rgba(238, 125, 48, 0)   0%,
127      rgba(238, 125, 48, 0.22) 18%,
128      rgba(238, 125, 48, 0.22) 82%,
129      rgba(238, 125, 48, 0)   100%);
130  }
131
132  /* Full-width showcase block — brand-coloured left rule, gradient
133     translucent background, image bleeds to the container edges. The
134     `--simcoon`, `--fedoo`, `--microgen` modifiers swap the brand colour. */
135  .showcase {
136    --brand:        #2fa12c;
137    --brand-dark:   #1f7a1a;
138    --brand-r:      47;
139    --brand-g:      161;
140    --brand-b:      44;
141    margin: 2.5em 0 3em;
142    padding: 1em 1.4em 1.4em;
143    border-left: 3px solid var(--brand);
144    background: linear-gradient(90deg,
145      rgba(var(--brand-r), var(--brand-g), var(--brand-b), 0.10) 0%,
146      rgba(var(--brand-r), var(--brand-g), var(--brand-b), 0.04) 35%,
147      rgba(var(--brand-r), var(--brand-g), var(--brand-b), 0)   100%);
148    border-radius: 0 8px 8px 0;
149  }
150  .showcase--fedoo    { --brand: #2fa12c; --brand-dark: #1f7a1a;
151                        --brand-r: 47;  --brand-g: 161; --brand-b: 44;  }
152  .showcase--simcoon  { --brand: #971C20; --brand-dark: #6e1316;
153                        --brand-r: 151; --brand-g: 28;  --brand-b: 32;  }
154  .showcase--microgen { --brand: #ee7d30; --brand-dark: #c45f1a;
155                        --brand-r: 238; --brand-g: 125; --brand-b: 48;  }
156  .showcase__title {
157    margin: 0 0 0.35em;
158    color: var(--brand-dark);
159    font-weight: 700;
160    font-size: 1.4em;
161  }
162  .showcase__lede {
163    margin: 0 0 0.9em;
164    color: #2a2f3a;
165    font-size: 1.05em;
166    line-height: 1.5;
167  }
168  .showcase__img {
169    display: block;
170    width: 100%;
171    height: auto;
172    border-radius: 4px;
173  }
174  .showcase__grid {
175    display: grid;
176    grid-template-columns: 1fr 1fr;
177    gap: 1em;
178    align-items: start;
179  }
180  .showcase__grid--cols-3 { grid-template-columns: 1fr 1fr 1fr; }
181  .showcase__grid--cols-2x2 {
182    grid-template-columns: 1fr 1fr;
183    grid-auto-rows: 1fr;
184  }
185  .showcase__cell { margin: 0; }
186  .showcase__video {
187    display: block;
188    width: 100%;
189    height: auto;
190    border-radius: 4px;
191  }
192  .showcase__subcaption {
193    margin: 0.4em 0 0;
194    font-size: 0.92em;
195    color: #2a2f3a;
196    text-align: center;
197  }
198  .showcase__subcaption strong { color: var(--brand-dark); }
199  @media (max-width: 720px) {
200    .showcase__grid { grid-template-columns: 1fr; }
201  }
202  .showcase__caption {
203    margin: 0.7em 0 0;
204    font-size: 0.92em;
205    color: #5a5e6b;
206  }
207  .showcase__caption code {
208    background: rgba(var(--brand-r), var(--brand-g), var(--brand-b), 0.10);
209    padding: 0.05em 0.4em;
210    border-radius: 3px;
211  }
212</style>
213
214<!-- SEO: keywords (page-level overrides site-level) --><meta name="keywords" content="mechanics of materials, computational mechanics, constitutive modeling, micromechanics, finite element analysis, nonlinear FEM, periodic homogenization, microstructure generation, TPMS, gyroid, lattice structures, polycrystal, Voronoi tessellation, plasticity, hyperelasticity, shape memory alloys, composites, Mori-Tanaka, simcoon, fedoo, microgen, Python, C++, UMAT, Abaqus, open source">
215
216<!-- SEO: structured data for the three open-source libraries -->
217<script type="application/ld+json">
218{
219  "@context": "https://schema.org",
220  "@graph": [
221    {
222      "@type": "SoftwareApplication",
223      "name": "simcoon",
224      "applicationCategory": "EngineeringApplication",
225      "operatingSystem": "Linux, macOS, Windows",
226      "url": "https://3mah.github.io/simcoon-docs/",
227      "codeRepository": "https://github.com/3MAH/simcoon",
228      "programmingLanguage": ["C++", "Python"],
229      "description": "Constitutive modeling and micromechanics library: anisotropic elasticity, plasticity, viscoelasticity, hyperelasticity, phase transformation and mean-field homogenization."
230    },
231    {
232      "@type": "SoftwareApplication",
233      "name": "fedoo",
234      "applicationCategory": "EngineeringApplication",
235      "operatingSystem": "Linux, macOS, Windows",
236      "url": "https://3mah.github.io/fedoo-docs/",
237      "codeRepository": "https://github.com/3MAH/fedoo",
238      "programmingLanguage": "Python",
239      "description": "Python finite element solver for nonlinear solid mechanics with periodic homogenization, beam, shell and solid elements, and PGD model reduction."
240    },
241    {
242      "@type": "SoftwareApplication",
243      "name": "microgen",
244      "applicationCategory": "EngineeringApplication",
245      "operatingSystem": "Linux, macOS, Windows",
246      "url": "https://3mah.github.io/microgen-docs/",
247      "codeRepository": "https://github.com/3MAH/microgen",
248      "programmingLanguage": "Python",
249      "description": "Python library for microstructure generation and meshing: TPMS, lattices, polycrystals and hybrid architectures, exported as periodic finite element meshes."
250    }
251  ]
252}
253</script>
253
254
255<!-- MathJax Support -->
256<script type="text/javascript" async
257  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
258</script>
258
259
260<!-- end custom head snippets -->
261
262  </head>
263
264  <body class="layout--splash">
265    <nav class="skip-links">
266  <ul>
267    <li><a href="#site-nav" class="screen-reader-shortcut">Skip to primary navigation</a></li>
268    <li><a href="#main" class="screen-reader-shortcut">Skip to content</a></li>
269    <li><a href="#footer" class="screen-reader-shortcut">Skip to footer</a></li>
270  </ul>
271</nav>
272
273    
274
275<div class="masthead">
276  <div class="masthead__inner-wrap">
277    <div class="masthead__menu">
278      <nav id="site-nav" class="greedy-nav">
279        
280          <a class="site-logo" href="/"><img src="/assets/images/logo_3mah/3mah_logo_vsmall.png" alt="3MAH"></a>
281        
282        <a class="site-title" href="/">
283          3MAH
284          
285        </a>
286        <ul class="visible-links"><li class="masthead__menu-item">
287              <a
288                href="https://3mah.github.io/simcoon-docs/"
289                
290                
291              >simcoon</a>
292            </li><li class="masthead__menu-item">
293              <a
294                href="https://3mah.github.io/fedoo-docs/"
295                
296                
297              >fedoo</a>
298            </li><li class="masthead__menu-item">
299              <a
300                href="https://3mah.github.io/microgen-docs/"
301                
302                
303              >microgen</a>
304            </li><li class="masthead__menu-item">
305              <a
306                href="/team/"
307                
308                
309              >Team</a>
310            </li><li class="masthead__menu-item">
311              <a
312                href="/gallery/"
313                
314                
315              >Gallery</a>
316            </li></ul>
317        
318        <button class="greedy-nav__toggle hidden" type="button">
319          <span class="visually-hidden">Toggle Menu</span>
320          <div class="navicon"></div>
321        </button>
322        <ul class="hidden-links hidden"></ul>
323      </nav>
324    </div>
325  </div>
326</div>
327
328
329    <div class="initial-content">
330      
331  
332
333
334
335
336
337
338
339<div class="page__hero--overlay"
340  style="background-color: #0a1428; background-image: linear-gradient(rgba(0, 0, 0, 0.35), rgba(0, 0, 0, 0.35)), url('/assets/images/index/microgen/tpms_cylinder.png');"
341>
342  
343    <div class="wrapper">
344      <h1 id="page-title" class="page__title" itemprop="headline">
345        
346          3MAH — Mechanics of Heterogeneous &amp; Architectured Materials
347
348        
349      </h1>
350      
351        <p class="page__lead">Open-source scientific tools for the mechanics of materials and multiphysics: constitutive modeling, finite element analysis, and microstructure generation, in a single coherent workflow.
352</p>
353      
354      
355
356
357      
358    </div>
359  
360  
361    <span class="page__hero-caption">Gyroid TPMS rendered with microgen
362</span>
363  
364</div>
365
366
367
368<div id="main" role="main">
369  <article class="splash" itemscope itemtype="https://schema.org/CreativeWork">
370    <meta itemprop="headline" content="3MAH — Mechanics of Heterogeneous &amp; Architectured Materials">
371    <meta itemprop="description" content="Open-source scientific tools for the mechanics of materials and multiphysics: constitutive modeling, finite element analysis, and microstructure generation, in a single coherent workflow.">
372    
373    
374
375    <section class="page__content" itemprop="text">
376      
377<div class="feature__wrapper">
378
379  
380
381    
382
383    
384    
385    <div class="feature__item--center">
386      <div class="archive__item">
387        
388
389        <div class="archive__item-body">
390          
391
392          
393            <div class="archive__item-excerpt">
394              <p>The <strong>3MAH</strong> initiative brings together three complementary, interoperable open-source libraries: <strong>simcoon</strong> for constitutive modeling and micromechanics, <strong>fedoo</strong> for nonlinear finite element analysis, and <strong>microgen</strong> for microstructure generation and meshing. Together, they provide a complete pipeline from geometry to simulation for research in mechanics of heterogeneous and architectured materials.</p>
395
396            </div>
397          
398
399          
400        </div>
401      </div>
402    </div>
403  
404
405</div>
406
407<h2 class="brand-simcoon" id="simcoon--constitutive-modeling--micromechanics">simcoon — Constitutive modeling &amp; micromechanics</h2>
408
409<div class="feature__wrapper">
410
411  
412
413    
414
415    
416    
417    <div class="feature__item">
418      <div class="archive__item">
419        
420          <div class="archive__item-teaser">
421            
422            
423              <img src="https://3mah.github.io/assets/images/logo_simcoon/simcoon_logo_text.png" alt="simcoon" />
424            
425          </div>
426        
427
428        <div class="archive__item-body">
429          
430            <h2 class="archive__item-title">simcoon</h2>
431          
432
433          
434            <div class="archive__item-excerpt">
435              <p><strong>Constitutive modeling and micromechanics</strong> in C++ with Python bindings. Anisotropic elasticity, plasticity (isotropic, kinematic, Chaboche), viscoelasticity, hyperelasticity and phase transformation, with finite-strain support.</p>
436
437            </div>
438          
439
440          
441            <p><a href="https://3mah.github.io/simcoon-docs/" class="btn btn--primary">simcoon docs</a></p>
442          
443        </div>
444      </div>
445    </div>
446  
447
448    
449
450    
451    
452    <div class="feature__item">
453      <div class="archive__item">
454        
455          <div class="archive__item-teaser">
456            
457            
458              <img src="https://3mah.github.io/assets/images/index/simcoon/simcoon_homog_mori_tanaka.png" alt="Mean-field homogenization" />
459            
460          </div>
461        
462
463        <div class="archive__item-body">
464          
465            <h2 class="archive__item-title">Mean-field homogenization</h2>
466          
467
468          
469            <div class="archive__item-excerpt">
470              <p>Effective properties of composites with <strong>Mori-Tanaka</strong> and self-consistent schemes, framed by Voigt and Reuss bounds and validated against experimental data.</p>
471
472            </div>
473          
474
475          
476            <p><a href="https://3mah.github.io/simcoon-docs/examples/heterogeneous/homogenization.html" class="btn btn--primary">See example</a></p>
477          
478        </div>
479      </div>
480    </div>
481  
482
483    
484
485    
486    
487    <div class="feature__item">
488      <div class="archive__item">
489        
490          <div class="archive__item-teaser">
491            
492            
493              <img src="https://3mah.github.io/assets/images/index/simcoon/simcoon_directional_stiffness.png" alt="Directional stiffness" />
494            
495          </div>
496        
497
498        <div class="archive__item-body">
499          
500            <h2 class="archive__item-title">Analysis &amp; identification</h2>
501          
502
503          
504            <div class="archive__item-excerpt">
505              <p>Analyse <strong>directional stiffness</strong>, yield surfaces and cyclic response, then identify model parameters with hybrid genetic-gradient algorithms.</p>
506
507            </div>
508          
509
510          
511            <p><a href="https://3mah.github.io/simcoon-docs/examples/analysis/directional_stiffness.html" class="btn btn--primary">See example</a></p>
512          
513        </div>
514      </div>
515    </div>
516  
517
518</div>
519
520<figure class="showcase showcase--simcoon">
521  <p class="showcase__title">Parameter identification from cyclic experiments</p>
522  <p class="showcase__lede">
523    Identify <strong>seven Chaboche parameters</strong> — initial yield σ_y,
524    Voce isotropic hardening (Q, b) and two non-linear Armstrong-Frederick
525    backstresses (C₁, D₁, C₂, D₂) — from <strong>three cyclic uniaxial
526    tests</strong> at increasing strain amplitudes. simcoon's
527    <strong>EPCHA</strong> UMAT is the forward model, driven through
528    <code>sim.solver</code>; the new <code>simcoon.identify</code> module
529    wraps SciPy's differential evolution with a key-based file-templating
530    workflow that generalises to any optimiser or external simulator.
531  </p>
532  <video class="showcase__video" src="/assets/images/index/simcoon/simcoon_chaboche_identification.mp4" poster="/assets/images/index/simcoon/simcoon_chaboche_identification.png" autoplay="" loop="" muted="" playsinline="" preload="metadata" aria-label="Differential-evolution iterations converging onto three experimental cyclic stress-strain curves"></video>
533  <p class="showcase__caption">
534    EPCHA UMAT · E = 140 GPa, ν = 0.3 (fixed) · 7 parameters identified ·
535    cost = NMSE-per-response, balanced across the three tests · optimiser:
536    <code>scipy.optimize.differential_evolution</code> (popsize 15, maxiter 80,
537    seed 42) · final cost ≈ 8 × 10⁻³.
538  </p>
539</figure>
540
541<h2 class="brand-fedoo" id="fedoo--nonlinear-finite-element-analysis">fedoo — Nonlinear finite element analysis</h2>
542
543<div class="feature__wrapper">
544
545  
546
547    
548
549    
550    
551    <div class="feature__item">
552      <div class="archive__item">
553        
554          <div class="archive__item-teaser">
555            
556            
557              <img src="https://3mah.github.io/assets/images/logo_fedoo/fedoo_logo.png" alt="fedoo" />
558            
559          </div>
560        
561
562        <div class="archive__item-body">
563          
564            <h2 class="archive__item-title">fedoo</h2>
565          
566
567          
568            <div class="archive__item-excerpt">
569              <p>A <strong>Python finite element solver</strong> for nonlinear mechanics, with an emphasis on geometric and material nonlinearity, model reduction (PGD) and multiscale homogenization.</p>
570
571            </div>
572          
573
574          
575            <p><a href="https://3mah.github.io/fedoo-docs/" class="btn btn--primary">fedoo docs</a></p>
576          
577        </div>
578      </div>
579    </div>
580  
581
582    
583
584    
585    
586    <div class="feature__item">
587      <div class="archive__item">
588        
589          <div class="archive__item-teaser">
590            
591            
592              <img src="https://3mah.github.io/assets/images/index/fedoo/fedoo_periodic_homog.png" alt="Periodic homogenization" />
593            
594          </div>
595        
596
597        <div class="archive__item-body">
598          
599            <h2 class="archive__item-title">Periodic homogenization</h2>
600          
601
602          
603            <div class="archive__item-excerpt">
604              <p>Apply <strong>periodic boundary conditions</strong> on representative volume elements to extract full anisotropic effective stiffness and nonlinear macroscopic response.</p>
605
606            </div>
607          
608
609          
610            <p><a href="https://3mah.github.io/fedoo-docs/examples/03-advanced/3D_periodic_BC_off_axis.html" class="btn btn--primary">See example</a></p>
611          
612        </div>
613      </div>
614    </div>
615  
616
617    
618
619    
620    
621    <div class="feature__item">
622      <div class="archive__item">
623        
624          <div class="archive__item-teaser">
625            
626            
627              <img src="https://3mah.github.io/assets/images/index/fedoo/fedoo_beam_lattice.png" alt="Beam and shell elements" />
628            
629          </div>
630        
631
632        <div class="archive__item-body">
633          
634            <h2 class="archive__item-title">Beam, shell and solid elements</h2>
635          
636
637          
638            <div class="archive__item-excerpt">
639              <p>From 2D plates with holes to 3D <strong>beam lattices</strong> and pressurised shells: a unified API for 1D, 2D and 3D structural analysis.</p>
640
641            </div>
642          
643
644          
645            <p><a href="https://3mah.github.io/fedoo-docs/" class="btn btn--primary">Read more</a></p>
646          
647        </div>
648      </div>
649    </div>
650  
651
652</div>
653
654<figure class="showcase showcase--fedoo">
655  <p class="showcase__title">Nonlinear and finite-strain mechanics</p>
656  <p class="showcase__lede">
657    Plastic buckling of a thin tube under axial compression — 2D <strong>axisymmetric</strong>
658    model with <strong>updated-Lagrangian</strong> finite strain,
659    <strong>self-contact</strong>, and a simcoon <strong>EPICP</strong>
660    elasto-plastic UMAT. Line-search Newton with adaptive stiffness drives
661    the tube from undeformed to fully folded in a single nonlinear solve.
662  </p>
663  <div class="showcase__grid showcase__grid--cols-3">
664    <figure class="showcase__cell">
665      <img class="showcase__img" src="/assets/images/index/fedoo/fedoo_tube_initial.png" alt="Undeformed tube — initial configuration" />
666      <p class="showcase__subcaption"><strong>Initial</strong></p>
667    </figure>
668    <figure class="showcase__cell">
669      <video class="showcase__video" src="/assets/images/index/fedoo/fedoo_tube_evolution.mp4" poster="/assets/images/index/fedoo/fedoo_tube_initial.png" autoplay="" loop="" muted="" playsinline="" preload="metadata" aria-label="Tube buckling evolution from undeformed to fully folded under axial compression"></video>
670      <p class="showcase__subcaption"><strong>Evolution</strong></p>
671    </figure>
672    <figure class="showcase__cell">
673      <a href="https://3mah.github.io/fedoo-docs/examples/03-advanced/tube_compression.html">
674        <img class="showcase__img" src="/assets/images/index/fedoo/fedoo_tube_final.png" alt="Fully folded tube — final accordion-like configuration with equivalent plastic strain field" />
675      </a>
676      <p class="showcase__subcaption"><strong>Final</strong></p>
677    </figure>
678  </div>
679  <p class="showcase__caption">
680    E = 200 GPa · σ_y = 300 MPa · power-law isotropic hardening
681    <code>σ = σ_y + k·p<sup>m</sup></code> (k = 1000, m = 0.3) ·
682    240 axial elements · 3D revolution from the axisymmetric solution ·
683    field shown: equivalent plastic strain p.
684  </p>
685</figure>
686
687<div class="feature__wrapper">
688
689  
690
691    
692
693    
694    
695    <div class="feature__item--left">
696      <div class="archive__item">
697        
698          <div class="archive__item-teaser">
699            
700            
701              
702              
703              <video src="/assets/images/index/fedoo/fedoo_ipc_indentation.mp4" poster="/assets/images/index/fedoo/fedoo_ipc_indentation.png" autoplay="" loop="" muted="" playsinline="" preload="metadata" style="width:100%;height:auto;display:block;" aria-label="Stiff disk progressively indenting a soft plate, von Mises stress field"></video>
704            
705          </div>
706        
707
708        <div class="archive__item-body">
709          
710            <h2 class="archive__item-title">Contact with IPC</h2>
711          
712
713          
714            <div class="archive__item-excerpt">
715              <p>Robust <strong>incremental potential contact</strong> (IPC) via the <code class="language-plaintext highlighter-rouge">ipctk</code> backend — barrier-method, intersection-free, <strong>frictional or frictionless</strong> contact for indentation, self-contact and lattice compression. The disk-on-plate example here is validated against the Hertzian half-space solution.</p>
716
717            </div>
718          
719
720          
721            <p><a href="https://3mah.github.io/fedoo-docs/" class="btn btn--primary">Read more</a></p>
722          
723        </div>
724      </div>
725    </div>
726  
727
728</div>
729
730<h2 class="brand-microgen" id="microgen--microstructure-generation--meshing">microgen — Microstructure generation &amp; meshing</h2>
731
732<div class="feature__wrapper">
733
734  
735
736    
737
738    
739    
740    <div class="feature__item">
741      <div class="archive__item">
742        
743          <div class="archive__item-teaser">
744            
745            
746              <img src="https://3mah.github.io/assets/images/logo_microgen/microgen_logo.png" alt="microgen" />
747            
748          </div>
749        
750
751        <div class="archive__item-body">
752          
753            <h2 class="archive__item-title">microgen</h2>
754          
755
756          
757            <div class="archive__item-excerpt">
758              <p>A <strong>Python library for microstructure generation and meshing</strong>: TPMS, lattices, polycrystals and hybrid architectures, exported to CAD or directly to periodic FE meshes.</p>
759
760            </div>
761          
762
763          
764            <p><a href="https://3mah.github.io/microgen-docs/" class="btn btn--primary">microgen docs</a></p>
765          
766        </div>
767      </div>
768    </div>
769  
770
771    
772
773    
774    
775    <div class="feature__item">
776      <div class="archive__item">
777        
778          <div class="archive__item-teaser">
779            
780            
781              <img src="https://3mah.github.io/assets/images/index/microgen/gyroid_graded.png" alt="Graded TPMS" />
782            
783          </div>
784        
785
786        <div class="archive__item-body">
787          
788            <h2 class="archive__item-title">Graded TPMS &amp; lattices</h2>
789          
790
791          
792            <div class="archive__item-excerpt">
793              <p>Generate <strong>gyroids, Schwarz, Schoen</strong> and other triply periodic minimal surfaces, with spatially graded thickness and mapping onto arbitrary CAD bodies.</p>
794
795            </div>
796          
797
798          
799            <p><a href="https://3mah.github.io/microgen-docs/" class="btn btn--primary">See example</a></p>
800          
801        </div>
802      </div>
803    </div>
804  
805
806    
807
808    
809    
810    <div class="feature__item">
811      <div class="archive__item">
812        
813          <div class="archive__item-teaser">
814            
815            
816              
817              
818              <video src="/assets/images/index/microgen/examples/voronoi_polycrystal.mp4" poster="/assets/images/index/microgen/examples/voronoi_polycrystal.png" autoplay="" loop="" muted="" playsinline="" preload="metadata" style="width:100%;height:auto;display:block;" aria-label="Voronoi polycrystal grains assembling one by one"></video>
819            
820          </div>
821        
822
823        <div class="archive__item-body">
824          
825            <h2 class="archive__item-title">Polycrystals &amp; architectured cells</h2>
826          
827
828          
829            <div class="archive__item-excerpt">
830              <p><strong>Voronoi</strong> polycrystals, octet-truss lattices, honeycombs and hybrid architectures, ready for periodic homogenization in fedoo or Abaqus.</p>
831
832            </div>
833          
834
835          
836            <p><a href="https://3mah.github.io/microgen-docs/" class="btn btn--primary">Read more</a></p>
837          
838        </div>
839      </div>
840    </div>
841  
842
843</div>
844
845<figure class="showcase showcase--microgen">
846  <p class="showcase__title">Graded and periodic meshes</p>
847  <p class="showcase__lede">
848    microgen drives <strong>Gmsh</strong> and <strong>MMG</strong> from
849    Python to deliver two complementary mesh styles for architectured
850    materials: <strong>graded</strong> structures with spatially varying
851    thickness, and seamlessly <strong>periodic</strong> unit cells ready
852    for periodic-homogenisation BCs in fedoo or Abaqus.
853  </p>
854  <div class="showcase__grid">
855    <figure class="showcase__cell">
856      <a href="https://3mah.github.io/microgen-docs/">
857        <img class="showcase__img" src="/assets/images/index/microgen/microgen_hero.png" alt="Spatially graded gyroid with the conforming triangular mesh visible across the gradient" />
858      </a>
859      <p class="showcase__subcaption">
860        <strong>Graded</strong> — tanh-graded gyroid, thickness varying along x.
861      </p>
862    </figure>
863    <figure class="showcase__cell">
864      <a href="https://3mah.github.io/microgen-docs/">
865        <img class="showcase__img" src="/assets/images/index/microgen/microgen_periodic.png" alt="A single TPMS unit cell tiled three by two showing seamless periodicity across cell boundaries" />
866      </a>
867      <p class="showcase__subcaption">
868        <strong>Periodic</strong> — unit cell tiled 3 × 2, no seam visible.
869      </p>
870    </figure>
871  </div>
872  <p class="showcase__caption">
873    Open CASCADE / CadQuery for geometry · Gmsh for the conforming
874    triangulation · MMG for adaptive remeshing · exported as <code>.vtk</code>
875    /<code>.msh</code> for fedoo, Abaqus and others.
876  </p>
877</figure>
878
879<div class="feature__wrapper">
880
881  
882
883    
884
885    
886    
887    <div class="feature__item--right">
888      <div class="archive__item">
889        
890          <div class="archive__item-teaser">
891            
892            
893              
894              
895              <video src="/assets/images/index/microgen/microgen_morph.mp4" autoplay="" loop="" muted="" playsinline="" preload="metadata" style="width:100%;height:auto;display:block;" aria-label="Continuous morphing through eleven TPMS surface families"></video>
896            
897          </div>
898        
899
900        <div class="archive__item-body">
901          
902            <h2 class="archive__item-title">Continuous morphing between TPMS families</h2>
903          
904
905          
906            <div class="archive__item-excerpt">
907              <p>Blend any two TPMS surface functions with a tanh weight to walk continuously through families: <strong>gyroid → Schwarz P → Schwarz D → Neovius → Schoen IWP → Schoen FRD → Fischer-Koch S → PMY → honeycomb → Lidinoid → split P → gyroid</strong>. The animated transition exposes the underlying surface-function arithmetic of microgen.</p>
908
909            </div>
910          
911
912          
913            <p><a href="https://3mah.github.io/microgen-docs/" class="btn btn--primary">Read more</a></p>
914          
915        </div>
916      </div>
917    </div>
918  
919
920</div>
921
922<h2 id="from-microstructure-to-simulation">From microstructure to simulation</h2>
923
924<p>The same Kelvin (truncated-octahedron) unit cell is generated and meshed with <strong>microgen</strong>, exported as a conforming periodic mesh, then loaded directly into <strong>fedoo</strong> to run a periodic homogenization with <strong>simcoon</strong> constitutive models. One workflow, three libraries — geometry, mesh and simulation kept in lock-step.</p>
925
926<figure class="half">
927  <a href="/microgen/"><img src="/assets/images/index/fedoo/fedoo_kelvin_mesh.png" alt="Kelvin RVE - conforming periodic mesh from microgen" /></a>
928  <a href="/fedoo/"><img src="/assets/images/index/fedoo/fedoo_periodic_homog.png" alt="Kelvin RVE - periodic homogenization with fedoo" /></a>
929  <figcaption>Same Kelvin unit cell — left: periodic conforming mesh from microgen; right: periodic homogenization (shear E<sub>YZ</sub>, σ<sub>YZ</sub> field) in fedoo.</figcaption>
930</figure>
931
932<div class="feature__wrapper">
933
934  
935
936    
937
938    
939    
940    <div class="feature__item">
941      <div class="archive__item">
942        
943
944        <div class="archive__item-body">
945          
946            <h2 class="archive__item-title">Team</h2>
947          
948
949          
950            <div class="archive__item-excerpt">
951              <p>Meet the researchers and labs behind 3MAH.</p>
952
953            </div>
954          
955
956          
957            <p><a href="https://3mah.github.io/team/" class="btn btn--inverse">About the team</a></p>
958          
959        </div>
960      </div>
961    </div>
962  
963
964    
965
966    
967    
968    <div class="feature__item">
969      <div class="archive__item">
970        
971
972        <div class="archive__item-body">
973          
974            <h2 class="archive__item-title">Gallery</h2>
975          
976
977          
978            <div class="archive__item-excerpt">
979              <p>Explore simulations and renderings produced with the 3MAH stack.</p>
980
981            </div>
982          
983
984          
985            <p><a href="https://3mah.github.io/gallery/" class="btn btn--inverse">Open gallery</a></p>
986          
987        </div>
988      </div>
989    </div>
990  
991
992</div>
993
994
995    </section>
996  </article>
997</div>
998
999      
1000    </div>
1001
1002    
1003
1004    <div id="footer" class="page__footer">
1005      <footer>
1006        <!-- start custom footer snippets -->
1007
1008<!-- end custom footer snippets -->
1009
1010        <div class="page__footer-follow">
1011  <ul class="social-icons">
1012    
1013      <li><strong>Follow:</strong></li>
1014    
1015
1016    
1017
1018    
1019      <li><a href="/feed.xml"><i class="fas fa-fw fa-rss-square" aria-hidden="true"></i> Feed</a></li>
1020    
1021  </ul>
1022</div>
1023
1024<div class="page__footer-copyright">&copy; 2026 <a href="https://3MAH.github.io">3MAH</a>. Powered by <a href="https://jekyllrb.com" rel="nofollow">Jekyll</a> &amp;
1024 <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
1025
1026      </footer>
1027    </div>
1028
1029    
1030  
1030<script src="/assets/js/main.min.js"></script>
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040  </body>
1041</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.