<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blog on Grassl Group</title>
    <link>https://petergrassl.com/blog/</link>
    <description>Recent content in Blog on Grassl Group</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <lastBuildDate>Tue, 26 May 2026 09:00:00 +0100</lastBuildDate>
    <atom:link href="https://petergrassl.com/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CFRP-confined concrete cylinder — hardening past the unconfined peak</title>
      <link>https://petergrassl.com/blog/column-frp-confined/</link>
      <pubDate>Tue, 26 May 2026 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/column-frp-confined/</guid>
      <description>&lt;p&gt;Plain concrete under uniaxial compression softens —&#xA;microcracks open, stiffness drops, and the load–displacement curve descends. Wrap the same cylinder in a CFRP sheet and the macroscopic curve&#xA;no longer softens: load capacity keeps growing well past the unconfined&#xA;peak, often two- or three-fold. Yet if you cut a tested FRP-wrapped&#xA;specimen open, the concrete inside is damaged.&lt;/p&gt;&#xA;&lt;p&gt;The two stories are not contradictory. They come from the competition&#xA;between two mechanisms. Both can be&#xA;reproduced in OOFEM with CDPM2 (&lt;code&gt;con2dpm&lt;/code&gt;) by changing only the boundary:&#xA;add an array of circumferential truss hoops around the cylinder and the&#xA;softening curve becomes a hardening one.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Discrete aggregates in a 2D lattice transport mesh</title>
      <link>https://petergrassl.com/blog/lattice-aggregate-flow-2d/</link>
      <pubDate>Tue, 19 May 2026 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/lattice-aggregate-flow-2d/</guid>
      <description>&lt;p&gt;The first two posts in this series (&lt;a href=&#34;https://petergrassl.com/blog/lattice-flow-2d-erfc/&#34;&gt;verification against the 1D analytical&lt;/a&gt;&#xA;and &lt;a href=&#34;https://petergrassl.com/blog/lattice-flow-2d-lumped/&#34;&gt;lumped vs consistent capacity under van Genuchten&lt;/a&gt;)&#xA;held the medium homogeneous and varied just one numerical knob at a&#xA;time. Concrete is not homogeneous — at the meso-scale it is a cement&#xA;paste matrix with stiff, almost impermeable aggregates packed inside.&#xA;This third post puts those aggregates in explicitly and watches the&#xA;wetting front go around them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-mesh&#34;&gt;The mesh&lt;/h2&gt;&#xA;&lt;p&gt;A random aggregate packing is generated by the &lt;code&gt;aggregate&lt;/code&gt; tool from a&#xA;prescribed grading curve and target volume fraction, then handed to the&#xA;&lt;code&gt;generator&lt;/code&gt; mesh tool through the converter&amp;rsquo;s &lt;code&gt;#@inclusionfile&lt;/code&gt;&#xA;directive. The mesher places lattice nodes outside the aggregate&#xA;boundaries and adds anchor pairs at the disk-boundary intersections so&#xA;the Voronoi tessellation respects the inclusion outlines. Any lattice&#xA;element that crosses into a disk is tagged as aggregate material;&#xA;everything else stays matrix.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why lumped capacity matters in unsaturated lattice transport</title>
      <link>https://petergrassl.com/blog/lattice-flow-2d-lumped/</link>
      <pubDate>Mon, 18 May 2026 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/lattice-flow-2d-lumped/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://petergrassl.com/blog/lattice-flow-2d-erfc/&#34;&gt;previous post&lt;/a&gt; showed the&#xA;transport lattice reproducing the 1D diffusion analytical for a linear&#xA;constant-capacity problem. Real porous media are rarely that easy to model:&#xA;in concrete, soil, and almost any partially-saturated material the&#xA;capacity &lt;code&gt;c(p) = dθ/dp&lt;/code&gt; is a sharp peak near the air-entry value, and the&#xA;relative permeability &lt;code&gt;k_r(p)&lt;/code&gt; varies by orders of magnitude with&#xA;saturation. This is the Richards-equation regime, and it&amp;rsquo;s where the&#xA;choice between a &lt;em&gt;consistent&lt;/em&gt; and a &lt;em&gt;lumped&lt;/em&gt; capacity matrix is important.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Transport on a Voronoi lattice — verification against the 1D diffusion analytical</title>
      <link>https://petergrassl.com/blog/lattice-flow-2d-erfc/</link>
      <pubDate>Sun, 17 May 2026 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/lattice-flow-2d-erfc/</guid>
      <description>&lt;p&gt;Most lattice posts on this site have been about fracture — &lt;em&gt;structural&lt;/em&gt;&#xA;frame elements that lie along the edges of the Delaunay triangulation&#xA;of a random point set, carrying axial, shear, and bending action and&#xA;breaking under load. Their cross-sections are the Voronoi cell faces&#xA;perpendicular to each element (polygon edges in 2D, polyhedron faces in&#xA;3D).&lt;/p&gt;&#xA;&lt;p&gt;The &lt;em&gt;transport&lt;/em&gt; lattice is the geometric dual of that. Its conduit&#xA;elements lie along the &lt;strong&gt;Voronoi cell edges&lt;/strong&gt; (between Voronoi vertices),&#xA;not the Delaunay edges, and their cross-sections are the&#xA;&lt;strong&gt;Delaunay edges&lt;/strong&gt; (triangle edges in 2D, tetrahedron faces in 3D) that&#xA;each Voronoi edge perpendicularly bisects. Mechanical and transport&#xA;problems share the same underlying Voronoi–Delaunay mesh, but each lives&#xA;on a different part of the duality: structural on the Delaunay edges,&#xA;transport on the Voronoi edges.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Crack-band vs nonlocal damage in dynamic crack branching</title>
      <link>https://petergrassl.com/blog/nonlocal-dynamic-idm1/</link>
      <pubDate>Sat, 09 May 2026 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/nonlocal-dynamic-idm1/</guid>
      <description>&lt;p&gt;Strain-softening damage models need a regularisation, otherwise the dissipated&#xA;energy and localisation width depend on the mesh. The crack-band approach&#xA;and the nonlocal averaging of equivalent strain are two common&#xA;fixes — but they don&amp;rsquo;t fix the same things. This post is about what each one&#xA;actually does, and where the difference shows up under dynamic loading.&lt;/p&gt;&#xA;&lt;h2 id=&#34;two-models-one-specimen&#34;&gt;Two models, one specimen&lt;/h2&gt;&#xA;&lt;p&gt;I ran two analyses of a 254×254 mm Homalite-100 cruciform plate with a 50 mm&#xA;central crack under biaxial impulsive loading. The geometry and loading are&#xA;inspired by one of the dynamic-photoelastic experiments of Hawong et al.,&#xA;&lt;a href=&#34;https://doi.org/10.1007/BF02319466&#34;&gt;doi.org/10.1007/BF02319466&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How a random e0 field affects the crack in a 2D tensile lattice</title>
      <link>https://petergrassl.com/blog/lattice-tensile-random-2d/</link>
      <pubDate>Fri, 08 May 2026 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/lattice-tensile-random-2d/</guid>
      <description>&lt;p&gt;Previously I showed that a periodic mesh removes the boundary&#xA;artefact in 2D direct-tension lattice models — the crack stops locking&#xA;onto the loaded face and instead reflects the heterogeneity of the&#xA;random node distribution. In this post, the natural follow-up: what happens&#xA;when we make the &lt;em&gt;material&lt;/em&gt; heterogeneous too, by sampling the elastic&#xA;strain threshold &lt;code&gt;e0&lt;/code&gt; from a spatial random field?&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-random-field&#34;&gt;The random field&lt;/h2&gt;&#xA;&lt;p&gt;The parameter &lt;code&gt;e0&lt;/code&gt; is what controls when an individual lattice element starts to&#xA;damage. In the previous case, it has been a single constant. Here&#xA;the per-element value is sampled from a 2D random field generated by my&#xA;own &lt;a href=&#34;https://github.com/githubgrasp/genran&#34;&gt;&lt;code&gt;genran&lt;/code&gt;&lt;/a&gt; code, which uses&#xA;the spectral representation of Shinozuka &amp;amp; Deodatis to produce fields&#xA;with a prescribed autocorrelation and a prescribed distribution. &lt;code&gt;genran&lt;/code&gt; supports Gaussian, Weibull, and grafted&#xA;Weibull–Gaussian marginals; the iterative refinement of Shields,&#xA;Deodatis &amp;amp; Bocchini (2011) recovers the prescribed autocorrelation&#xA;when the distribution is non-Gaussian.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Boundary-independent fracture in 2D direct tensile lattice models</title>
      <link>https://petergrassl.com/blog/lattice-tensile-periodic-2d/</link>
      <pubDate>Thu, 07 May 2026 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/lattice-tensile-periodic-2d/</guid>
      <description>&lt;p&gt;Lattice models are popular for modelling fracture.&#xA;Direct uniaxial tension is one of the simplest test most people start.&#xA;But it is also a difficult one to get right, because boundaries attract cracks.&#xA;This post shows what the problem is with a standard lattice, and how the issue can be removed.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-artefact&#34;&gt;The artefact&lt;/h2&gt;&#xA;&lt;p&gt;A 100×100 mm specimen, lattice of Voronoi cells generated from a random&#xA;point distribution, pulled in tension between two rigid platens (idealised by linking DOFs at the end to a control point). The&#xA;load–displacement response and the lattice-strain magnitude are shown side by side, frame-by-frame.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Four single element tests of CDPM2</title>
      <link>https://petergrassl.com/blog/cdpm2-single-monotonic/</link>
      <pubDate>Mon, 04 May 2026 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/cdpm2-single-monotonic/</guid>
      <description>&lt;p&gt;Sometimes people contact me who are implementing our concrete constitutive model &lt;a href=&#34;https://petergrassl.com/research/damage-plasticity/&#34;&gt;CDPM2&lt;/a&gt; in &lt;a href=&#34;https://github.com/githubgrasp/oofem&#34;&gt;OOFEM&lt;/a&gt; in their own finite element codes. Usually they ask for help with implementation and calibration. To help them to get started to check their implementation I built a small verification set in OOFEM, published it as a Docker image. If their implementation reproduces all four curves (tension, compression, simple shear and pure shear), then this is a good start.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rate dependence of corrosion-induced surface cracking in concrete: Lattice modelling and experiments</title>
      <link>https://petergrassl.com/blog/aldgra26/</link>
      <pubDate>Wed, 15 Apr 2026 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/aldgra26/</guid>
      <description>&lt;p&gt;Accepted in &lt;em&gt;Frontiers in Materials&lt;/em&gt;, April 2026. Preprint on SSRN. Lattice modelling and matched experiments examining the rate dependence of surface cracking driven by reinforcement corrosion.&lt;/p&gt;</description>
    </item>
    <item>
      <title>3D frame element for large rotations based on the rigid-body-spring concept for analysing the failure of structures</title>
      <link>https://petergrassl.com/blog/abdgra26/</link>
      <pubDate>Sun, 01 Mar 2026 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/abdgra26/</guid>
      <description>&lt;p&gt;A 3D frame finite element built on rigid-body-spring kinematics, evaluated on benchmark problems involving large rotations and progressive structural failure.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RAAC panels can suddenly collapse before any warning of corrosion-induced surface cracking</title>
      <link>https://petergrassl.com/blog/korgrajir25/</link>
      <pubDate>Mon, 15 Sep 2025 09:00:00 +0100</pubDate>
      <guid>https://petergrassl.com/blog/korgrajir25/</guid>
      <description>&lt;p&gt;Thick-walled cylinder modelling in RAAC: The steel cross-section can be severly reduced by corrosion before any surface crack appears.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
