From ab3b055a69f64f80c5aa31b9368e09f5fd9995e1 Mon Sep 17 00:00:00 2001 From: Brad Aagaard Date: Thu, 6 Jun 2024 21:35:09 -0600 Subject: [PATCH 1/8] FIX DOCS: Update simulation overview and workflow diagrams to include pylith_viz. --- docs/user/intro/figs/workflow.pdf | Bin 13184 -> 14597 bytes docs/user/intro/figs/workflow.svg | 6097 ++--------------- docs/user/intro/figs/workflow.tex | 4 +- .../run-pylith/figs/pylith_simulation.pdf | Bin 34324 -> 37324 bytes .../run-pylith/figs/pylith_simulation.svg | 4808 ++----------- .../run-pylith/figs/pylith_simulation.tex | 8 +- docs/user/run-pylith/overview.md | 3 +- 7 files changed, 1281 insertions(+), 9639 deletions(-) diff --git a/docs/user/intro/figs/workflow.pdf b/docs/user/intro/figs/workflow.pdf index d64982c73d534eb27eb0e0d99723a9eb2d37418c..6ce96d02ce9050181ede285fcc0e87c20e0a74b3 100644 GIT binary patch delta 13202 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 z ArW}IIZ_;+lL&4jF<5c$d9Y##_dsdLA|0Kyy17&!|6)oH854EOcAl`WJeygPPd z8qhDY0*=zQ!|yWD5UXETJyGeKJYa80X)@Kx7hWYf6ZZ@6^uyH^+uwhS(R`y|HBcJM zzHpew3wj?~1m-}=8;^h>$p@_G0vl6jEh1Wj%lQG`3x0bdRE80PwsYk}fz>enOELRv zh)`wC=yGGZ&RZ1+OJ@C`&TxULrVznpb;}iYRK>pvWPqZC^P026qfi* zn)2{i43g{op#^gseYu(GDS*fQ5*bzM0u$#N z1R=gT&!KNacVN(MnVE6@yt*EKuO_JZmwes(v&L~8pGV;taBAr0F&BpVa-TzWEB~lQ zb8`F2;vAC@pB*`+0{V9e9B>)go;vTMCd$vq3^X!7Ln(pK=2SFp3jHTsW}g;k!F6kl z5~RDeGTKM~s1+~dIjQ+2z*=s@bA(F&$V4X0nkVb4lI6)TK;v_xKyc)rHZ5akM&K#e z^GIdDv^jNZwFPbUw$7^C|6AyIB6$5o-!E|V8BQjSgl4gT$9nDY$-w{aXmu%m6GOk~ z>Up`?IW+~=BVsH;hN|IS1iP!vpvBZz4K6k(=QtXWj$#~n>GQy?#cm*;m&u%;iT$CC z+W*J%#zngk+oD`gjIvdQ|C>aY$<2mA$qR+3Yn7`!;py@BSpilYjXm|QRGNy5CagVg zL7e|>_?dsuDh}cLpLJOhN^NI_>4~p59gWR0*TXa*XVFXhBK105uquh0tZ(Ay>)vO_ zT$BIzqAP@>91Nd4c?R#zCbQnZ7B>}<(H;cv#80MW;dZMB zqvWud;G({E^z9|zj2tumO4;DnNp+r2-qT9x)No@8dz}BC*>fvXvPzg&`Ii}5t}wQE zhvFkpS2f=>FTOXDEh6Vp3(OoUx7#qyPZDezi7!&2p$O8V6%SP%b8uI z;oTE)V}sL{l^ndcMuDOBfXAyv+9}db07NM5lA@Fow|DwPFB!V7^!$Cl|LWM0+f>Si zb?A2}1S~sQ6!}#Gf8H;}=oaZw2rR|R>M|5jI zg_BS`I|KC+JzN&(xEOVnh~Wl23aE-=FgvT>NuwBTbqg%Jf4MSu2;ft!XU+)fSyWg^ zgxT>dsQxAZLj8>TG|KNiz4%}o_TSH%XhtyCz!9Jy^x8Rw;=;( zY;i?g{0UGdYC7}DPQlGiPm3CFp{}(}%P)DK)kfy2*U@=4F{{B4wJ3z2a#j)uq3)gv znjoyH;!mIpjpIt;pjt?$cAj1N?cob#&m0Tm>Z{utA{WxQ&p)23{?_D6PO50DL?Q%_8g81iIZNOcCZ^Nlke zTwuaRPk}%P-q)M+V7W(LMpeD6Ya38j|z70Sk>-;i>eO0r-KiOX;_b+jx zqD^~JAKA0Q>F9e_jd=_y;Oj{Gn&2OHlxBWQUhartKiN5=39VZZB(0nVqkMyn?@P;N zir#Mihs{j1sD1k-1J|YnIr{`mW}LXlP~-rgurt_g=XRBLTR1)YT8N?dl(@9E68)mw zW1&@BuH_I)tXbCvlFGcxFo<{VlDg-7iY&S0yDOPa)g4|^x3$PqZbPjkao&&#E!VWjAH?*!nERS=u{bVGmrT$^^(T;K@>1$T13&R0Z6- zUKBF--F%%zc{Y=d?cD+iMJHz$e`RkL)649}%j63})Un;u(Hz zVYxf$4sjc-`P+DZ`tIn3RrP&jZe2?wp81%yB6T7n& zC}htAXTUV!b2|~^|8Xx*a3R{?7E|_sM-fqFTxZpx@!oO8bUxn- zy_A12!P)JyWf>1PPHRy3{X0hOk~DlI;5Cn&2%5IxHR@BG?59xRlZ^w0FAu1xwsqN& zA1Lve{Ixxka8nHYD*gnM*mRjQJoAqoKoeg#?-+(%xARuL%PspP6ejw$pMVVZyObee zJ?~SfDa?lR$~!6W38q!a;|x4e?$|3p!GY~2b#1R>Ra1wIbl&lU)QkKpO?yA;II=xL z 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 - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - + + - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/user/intro/figs/workflow.tex b/docs/user/intro/figs/workflow.tex index edb851b322..9a58253768 100644 --- a/docs/user/intro/figs/workflow.tex +++ b/docs/user/intro/figs/workflow.tex @@ -61,7 +61,8 @@ \node (abaqus) [commercial, below=of relax] {Abaqus}; % Visualization - \node (paraview) [open, below=of viz] {ParaView}; + \node (pylith-viz) [open, below=of viz] {pylith\_viz (PyVista)}; + \node (paraview) [open, below=of pylith-viz] {ParaView}; \node (visit) [open, below=of paraview] {Visit}; \node (matplotlib) [open, below=of visit] {Matplotlib}; \node (matlab) [commercial, below=of matplotlib] {Matlab}; @@ -78,6 +79,7 @@ \path (cubit.east) edge[available] (pylith.west); \path (cubit.east) edge[available] (abaqus.west); + \path (pylith.east) edge[available] (pylith-viz.west); \path (pylith.east) edge[available] (paraview.west); \path (pylith.east) edge[available] (visit.west); \path (pylith.east) edge[available] (matlab.west); diff --git a/docs/user/run-pylith/figs/pylith_simulation.pdf b/docs/user/run-pylith/figs/pylith_simulation.pdf index 4842cb5e8d0c021a81f4e1d9e93650d8d4d793a7..c811d087c67669167954f1fb1a0f68616ab57406 100644 GIT binary patch delta 13922 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 delta 10979 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 x(HsUP3&qmO!rjBo($w*Pkh7T`io1uYn}@fXr4 - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + + + + + - - + + - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - + + - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/user/run-pylith/figs/pylith_simulation.tex b/docs/user/run-pylith/figs/pylith_simulation.tex index ae7acf67b3..64ed19cae8 100644 --- a/docs/user/run-pylith/figs/pylith_simulation.tex +++ b/docs/user/run-pylith/figs/pylith_simulation.tex @@ -57,8 +57,8 @@ \node (mesh) [mesh, above left=of pylith, text depth=11em, minimum width=26em, xshift=8em] {Mesh Generator}; \node (params) [params, above right=of pylith, text depth=11em, minimum width=18em, xshift=0em] {Simulation Parameters}; - \node (viz) [visualize, below= of pylith, text height=15em, minimum width=20em] {Visualization}; - \node (postprocess) [postprocess, right=of viz, text height=8em, xshift=5em] {Post-processing}; + \node (viz) [visualize, below= of pylith, text height=15em, minimum width=28em] {Visualization}; + \node (postprocess) [postprocess, right=of viz, text height=8em, xshift=2em] {Post-processing}; \end{pgfonlayer} @@ -82,8 +82,9 @@ \node (vtk) [output, xshift=-5.5em, yshift=+2em] at (viz) {VTK File(s) [.vtk]}; \node (hdf5) [output, right=of vtk, text width=8em] {HDF5 File(s) [.h5] \par Xdmf File(s) [.xmf]}; - \node (paraview) [app, below=of vtk, yshift=-2em] {ParaView}; + \node (paraview) [app, below=of vtk, xshift=-3.0em, yshift=-2em] {ParaView}; \node (visit) [app, right=of paraview] {Visit}; + \node (pylith-viz) [app, right=of visit] {pylith\_viz (PyVista)}; % Post-processing @@ -115,6 +116,7 @@ \path (vtk.south) edge[arrowto_minor] (visit.north); \path (hdf5.south) edge[arrowto_minor] (paraview.north); \path (hdf5.south) edge[arrowto_minor] (visit.north); + \path (hdf5.south) edge[arrowto_minor] (pylith-viz.north); \end{tikzpicture} diff --git a/docs/user/run-pylith/overview.md b/docs/user/run-pylith/overview.md index 8c39517582..2664b9bacd 100644 --- a/docs/user/run-pylith/overview.md +++ b/docs/user/run-pylith/overview.md @@ -203,13 +203,14 @@ The user supplies: PyLith writes solution information, such as solution fields and state variables, to either VTK files or HDF5/Xdmf files using the observer components. ParaView and Visit as well as several other visualization tools can read both types of files. +PyLith includes {ref}`sec-user-run-pylith-viz` for visualizing PyLith HDF files using PyVista. Post-processing of output is generally performed using HDF5 files accessed via a Python script and the h5py package or a Matlab script. :::{figure-md} fig:pylith:simulation Diagram of a PyLith simulation PyLith requires a finite-element mesh (three different mechanisms for generating a mesh are currently supported), simulation parameters, and spatial databases (defining the spatial variation of various parameters). -PyLith writes the solution output to either VTK or HDF5/Xdmf files, which can be visualized with ParaView or Visit. Post-processing is generally done using the HDF5 files with Python or Matlab scripts. +PyLith writes the solution output to either VTK or HDF5/Xdmf files, which can be visualized with ParaView or Visit. PyLith includes {ref}`sec-user-run-pylith-viz` for visualizing PyLith HDF files using PyVista. Post-processing is generally done using the HDF5 files with Python or Matlab scripts. ::: ## Nondimensionalization From 21fb849b345f7972327dea6e9ec239badc6f8dc1 Mon Sep 17 00:00:00 2001 From: Brad Aagaard Date: Thu, 6 Jun 2024 21:36:16 -0600 Subject: [PATCH 2/8] FIX DOCS: Update what's new section (changed to Significant Recent Changes). --- docs/user/intro/new.md | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/user/intro/new.md b/docs/user/intro/new.md index d24f1eadf3..4d2af863a2 100644 --- a/docs/user/intro/new.md +++ b/docs/user/intro/new.md @@ -1,4 +1,23 @@ -# New in PyLith Version 3.0.0 +# Significant Recent Changes + +## PyLith Version 4.1 + +* Improved runtime performance, including better preconditioners for elasticity with faults and poroelasticity +* 2D and 3D crustal strike-slip faults examples based on the 2019 Ridgecrest earthquake. +* 2D subduction zone outer-rise faulting example examining poroelastic response to bending stresses. +* `pylith_viz` utility for plotting PyLith results. +* Updated `examples/strikeslip-2d` and `examples/reverse-2d` to demonstrate use of uniform refinement and higher order discretizations to improve resolution of solution. + +## PyLith Version 4.0 + +* Changed name of fault Lagrange multiplier field for solution component in Python from `lagrange_fault` to `lagrange_multiplier_fault` to match name of solution field in C++. +* Removed support for importing meshes from LaGriT. +* Change in fault tractions are now included in the fault `data_fields` for prescribed slip. +* Fault and boundary orientation directions are now included in the `info_fields` for simulation output. +* State variables are now included in the default `data_fields` for simulation output. +* The default solver settings use the PETSc proper orthogonal decomposition (POD) methodology for initial guess of solutions to improve convergence. + +## PyLith Version 3.0 * Major rewrite of the finite-element implementation to support higher order discretizations and flexible specification of the governing equations. * Use of pointwise functions to implement governing equations; From 622e19595c3c2aeda3e2ae0444753f07c28639fa Mon Sep 17 00:00:00 2001 From: Brad Aagaard Date: Thu, 6 Jun 2024 21:36:32 -0600 Subject: [PATCH 3/8] FIX DOCS: Spell check. --- CHANGES.md | 2 +- release-notes/announce_v4.1.0.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 9a68031ef4..ab2c192254 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -16,7 +16,7 @@ The version numbers are in the form `MAJOR.MINOR.PATCH`, where major releases in * New 2D and 3D crustal strike-slip faults examples based on the 2019 Ridgecrest earthquake. * New 2D subduction zone outer-rise faulting example examining poroelastic response to bending stresses. * New `pylith_viz` utility for plotting PyLith results. - * Updated `examples/strikeslip-2d` and `examples/reverse-2d` to demonstrate use of uniform refinement and higher ordder discretizations to improve resolution of solution. + * Updated `examples/strikeslip-2d` and `examples/reverse-2d` to demonstrate use of uniform refinement and higher order discretizations to improve resolution of solution. * Documentation * Developer Guide: Added description of the process for adding event logging and evaluating performance, including performance logging. * Developer Guide: Added checklist for what is needed when contributing examples. diff --git a/release-notes/announce_v4.1.0.md b/release-notes/announce_v4.1.0.md index 7b33eea364..de34f8ed1a 100644 --- a/release-notes/announce_v4.1.0.md +++ b/release-notes/announce_v4.1.0.md @@ -19,7 +19,7 @@ Documentation * New 2D and 3D crustal strike-slip faults examples based on the 2019 Ridgecrest earthquake. * New 2D subduction zone outer-rise faulting example examining poroelastic response to bending stresses. * New `pylith_viz` utility for plotting PyLith results. - * Updated `examples/strikeslip-2d` and `examples/reverse-2d` to demonstrate use of uniform refinement and higher ordder discretizations to improve resolution of solution. + * Updated `examples/strikeslip-2d` and `examples/reverse-2d` to demonstrate use of uniform refinement and higher order discretizations to improve resolution of solution. * Documentation * Developer Guide: Added description of the process for adding event logging and evaluating performance, including performance logging. * Developer Guide: Added checklist for what is needed when contributing examples. From f570e4b6531ed0551febd0f2e682fcd567fae957 Mon Sep 17 00:00:00 2001 From: Brad Aagaard Date: Fri, 7 Jun 2024 12:07:59 -0600 Subject: [PATCH 4/8] FIX DOCS: Fix typo in code box for how to run magma-2d/step02. --- docs/user/examples/magma-2d/step02-inflation-statevars.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user/examples/magma-2d/step02-inflation-statevars.md b/docs/user/examples/magma-2d/step02-inflation-statevars.md index 542dc88b39..04286d8e52 100644 --- a/docs/user/examples/magma-2d/step02-inflation-statevars.md +++ b/docs/user/examples/magma-2d/step02-inflation-statevars.md @@ -93,7 +93,7 @@ ksp_divtol = 1.0e+5 --- caption: Run Step 2 simulation --- -$ pylith step02_inflation.cfg +$ pylith step02_inflation_statevars.cfg # The output should look something like the following. >> /software/unix/py3.12-venv/pylith-opt/lib/python3.12/site-packages/pylith/apps/PyLithApp.py:77:main From 7c1f97880ce1ffa3ffc193b449cd844b3ad35e65 Mon Sep 17 00:00:00 2001 From: Brad Aagaard Date: Fri, 7 Jun 2024 12:08:38 -0600 Subject: [PATCH 5/8] FIX: Correct spelling in comment in generate_gmsh.py. --- examples/reverse-2d/generate_gmsh.py | 2 +- examples/strikeslip-2d/generate_gmsh.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/reverse-2d/generate_gmsh.py b/examples/reverse-2d/generate_gmsh.py index d39bd31edf..0a350048c4 100755 --- a/examples/reverse-2d/generate_gmsh.py +++ b/examples/reverse-2d/generate_gmsh.py @@ -101,7 +101,7 @@ def create_geometry(self): # Create curves. We store the curve tag as a data member # so that we can refer to them later. # We traverse the curves in a counter clock-wise direction. - # If the curve is in the opporite direction, we use the negative tag. + # If the curve is in the opposite direction, we use the negative tag. self.c_yneg = gmsh.model.geo.add_line(p1, p2) self.c_xpos = gmsh.model.geo.add_line(p2, p3) self.c_ypos_fw = gmsh.model.geo.add_line(p3, p7) diff --git a/examples/strikeslip-2d/generate_gmsh.py b/examples/strikeslip-2d/generate_gmsh.py index 4e548097e7..dcbb7814f8 100755 --- a/examples/strikeslip-2d/generate_gmsh.py +++ b/examples/strikeslip-2d/generate_gmsh.py @@ -95,7 +95,7 @@ def create_geometry(self): # Create curve loops and surfaces from the curves. # We traverse the curves in a counter clock-wise direction. - # If the curve is in the opporite direction, we use the negative tag. + # If the curve is in the opposite direction, we use the negative tag. c0 = gmsh.model.geo.add_curve_loop([self.c_yneg1, self.c_fault, self.c_ypos1, self.c_xneg]) self.s_xneg = gmsh.model.geo.add_plane_surface([c0]) c1 = gmsh.model.geo.add_curve_loop([self.c_yneg2, self.c_xpos, self.c_ypos2, -self.c_fault]) From cd49e3478a1d8aafad6b1637c97f10457c73b60c Mon Sep 17 00:00:00 2001 From: Brad Aagaard Date: Thu, 6 Jun 2024 21:36:48 -0600 Subject: [PATCH 6/8] Add pdf_to_svg.py script in developer. --- developer/pdf_to_svg.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100755 developer/pdf_to_svg.py diff --git a/developer/pdf_to_svg.py b/developer/pdf_to_svg.py new file mode 100755 index 0000000000..f55da6ccdc --- /dev/null +++ b/developer/pdf_to_svg.py @@ -0,0 +1,16 @@ +#!/usr/bin/env nemesis + +import sys +import pymupdf + +if len(sys.argv) != 2: + print("usage: pdf_to_svg.py FILENAME") + sys.exit(1) + +filename_pdf = sys.argv[1] +doc = pymupdf.open(filename_pdf) # open a document +page = doc[0] + +filename_svg = filename_pdf.replace(".pdf", ".svg") +with open(filename_svg, "w", encoding="utf-8") as svg_out: + svg_out.write(page.get_svg_image()) From 9544b519929acfd757535aa8eddcb600a0fa7642 Mon Sep 17 00:00:00 2001 From: Brad Aagaard Date: Thu, 6 Jun 2024 18:10:49 -0600 Subject: [PATCH 7/8] Set 'main' branch version to 4.1.1. --- CHANGES.md | 6 ++++ CITATION.cff | 2 +- configure.ac | 2 +- docs/conf.py | 2 +- docs/intro/preface.md | 6 ++-- docs/user/install/index.md | 12 ++++---- release-notes/Makefile.am | 3 +- release-notes/announce_v4.1.1.md | 50 ++++++++++++++++++++++++++++++++ setup.cfg | 2 +- 9 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 release-notes/announce_v4.1.1.md diff --git a/CHANGES.md b/CHANGES.md index ab2c192254..28633c2783 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,12 @@ Starting with v3.0.0, we strictly follow the [semantic versioning guidelines](ht The version numbers are in the form `MAJOR.MINOR.PATCH`, where major releases indicate changes to the public API (parameters), minor releases indicate new functionality that is backward compatible, and patch releases indicate backward compatible bug fixes. ::: +## Version 4.1.1 (2024/06/09) + +* **Fixed** + * Improved setup of variable block Jacobian preconditioner used for elasticity with faults to reduce runtime. + * Fix several typos and update a few diagrams in the documentation. + ## Version 4.1.0 (2024/06/05) * **Changed** diff --git a/CITATION.cff b/CITATION.cff index 3988660abf..a521bac0ec 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -31,7 +31,7 @@ keywords: - earthquake - finite element license: MIT -version: 4.1.0 +version: 4.1.1 date-released: "2024-06-05" preferred-citation: type: article diff --git a/configure.ac b/configure.ac index ebc6376b50..2fc70a4645 100644 --- a/configure.ac +++ b/configure.ac @@ -10,7 +10,7 @@ dnl ============================================================================ dnl Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT([PyLith], [4.1.0], [https://geodynamics.org/resources/pylith]) +AC_INIT([PyLith], [4.1.1], [https://geodynamics.org/resources/pylith]) AC_CONFIG_AUX_DIR([./aux-config]) AC_CONFIG_HEADER([portinfo]) AC_CONFIG_MACRO_DIR([m4]) diff --git a/docs/conf.py b/docs/conf.py index b10a8ca114..839005c589 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,7 +22,7 @@ author = 'Brad T. Aagaard, Matthew G. Knepley, Charles A. Williams' # The full version, including alpha/beta/rc tags -release = '4.1.0' +release = '4.1.1' # -- General configuration --------------------------------------------------- diff --git a/docs/intro/preface.md b/docs/intro/preface.md index 73c0d25407..60c0102ac6 100644 --- a/docs/intro/preface.md +++ b/docs/intro/preface.md @@ -17,9 +17,9 @@ The following peer-reviewed paper discusses the development of PyLith: To cite the software and manual, use: -- Aagaard, B., M. Knepley, C. Williams (2024a), *PyLith v4.1.0.* Davis, CA: Computational Infrastructure of Geodynamics. DOI: 10.5281/zenodo.11479383. +- Aagaard, B., M. Knepley, C. Williams (2024a), *PyLith v4.1.1.* Davis, CA: Computational Infrastructure of Geodynamics. DOI: 10.5281/zenodo.11479383. -- Aagaard, B., M. Knepley, C. Williams (2024b), *PyLith Manual, Version 4.1.0.* Davis, CA: Computational Infrastructure of Geodynamics. https://pylith.readthedocs.io/en/v4.1.0 +- Aagaard, B., M. Knepley, C. Williams (2024b), *PyLith Manual, Version 4.1.1.* Davis, CA: Computational Infrastructure of Geodynamics. https://pylith.readthedocs.io/en/v4.1.1 ## Publishing Models @@ -43,7 +43,7 @@ Common output files include the solution fields and state variables as `.h5`, `. The configuration files, parameters of the simulation, and solution field for the models in this study are available at DOI (Authors X, Y, Z) under CC BY-NC-SA 4.0. -PyLith version 4.1.0 (Aagaard et al., 2013; Aagaard et al., 2023a; Aagaard et al., 2023b) used in these models is freely available under the MIT license for download through its software landing page https://geodynamics.org/resources/pylith or Zenodo (10.5281/zenodo.11479383). +PyLith version 4.1.1 (Aagaard et al., 2013; Aagaard et al., 2023a; Aagaard et al., 2023b) used in these models is freely available under the MIT license for download through its software landing page https://geodynamics.org/resources/pylith or Zenodo (10.5281/zenodo.11479383). The project is being actively developed on GitHub and can be accessed via https://github.com/geodynamics/pylith. ## Support diff --git a/docs/user/install/index.md b/docs/user/install/index.md index 7700c04abd..114c3eaa53 100644 --- a/docs/user/install/index.md +++ b/docs/user/install/index.md @@ -49,10 +49,10 @@ On macOS systems you can check the operating system version by clicking on the A 3. Unpack the tarball. ```{code-block} bash # Linux 64-bit - $ tar -xzf pylith-4.1.0-linux-x86_64.tar.gz + $ tar -xzf pylith-4.1.1-linux-x86_64.tar.gz # macOS - $ tar -xzf pylith-4.1.0-macOS-10.15-x86_64.tar.gz + $ tar -xzf pylith-4.1.1-macOS-10.15-x86_64.tar.gz ``` 4. Set environment variables. The provided `setup.sh` script only works if you are using bash shell. @@ -66,20 +66,20 @@ Ready to run PyLith. To bypass macOS quarantine restrictions, simply use command line program `curl` to download the tarball from within a terminal rather than using a web browser. ``` -curl -L -O https://github.com/geodynamics/pylith/releases/download/v4.1.0/pylith-4.1.0-macOS-10.15-x86_64.tar.gz +curl -L -O https://github.com/geodynamics/pylith/releases/download/v4.1.1/pylith-4.1.1-macOS-10.15-x86_64.tar.gz ``` Alternatively, if you do download the tarball using a web browser, after you unpack the tarball you can remove the macOS quarantine flags using the following commands (requires Administrator access): ``` # Show extended attributes -xattr ./pylith-4.1.0-macOS-10.15-x86_64 +xattr ./pylith-4.1.1-macOS-10.15-x86_64 # Output should be com.apple.quarantine # Remove quarantine attributes -sudo xattr -r -d com.apple.quarantine ./pylith-4.1.0-macOS-10.15-x86_64 +sudo xattr -r -d com.apple.quarantine ./pylith-4.1.1-macOS-10.15-x86_64 ``` ::: @@ -142,7 +142,7 @@ For each package this utility downloads the source code, configures it, builds i ## Verifying PyLith is Installed Correctly The easiest way to verify that PyLith has been installed correctly is to run one or more of the examples supplied with the binary and source code. -In the binary distribution, the examples are located in `src/pylith-4.1.0/examples` while in the source distribution, they are located in `pylith-4.1.0/examples`. +In the binary distribution, the examples are located in `src/pylith-4.1.1/examples` while in the source distribution, they are located in `pylith-4.1.1/examples`. {ref}`sec-examples` discusses how to run and visualize the results for the examples. To run the example discussed in Section {ref}`sec-examples-box-2d`: diff --git a/release-notes/Makefile.am b/release-notes/Makefile.am index fa17ee6f6e..46a5a17d07 100644 --- a/release-notes/Makefile.am +++ b/release-notes/Makefile.am @@ -43,7 +43,8 @@ EXTRA_DIST = \ announce_v3.0.2.md \ announce_v3.0.3.md \ announce_v4.0.0.md \ - announce_v4.1.0.md + announce_v4.1.0.md \ + announce_v4.1.1.md # End of file diff --git a/release-notes/announce_v4.1.1.md b/release-notes/announce_v4.1.1.md new file mode 100644 index 0000000000..6f55b48e52 --- /dev/null +++ b/release-notes/announce_v4.1.1.md @@ -0,0 +1,50 @@ +# PyLith v4.1.1 now available + +I am pleased to announce the release of PyLith 4.1.1, a finite-element code designed to solve dynamic elastic problems and quasi-static viscoelastic problems in tectonic deformation. + +You can download the source code and binaries from + + +Documentation + + +## Release Notes + +* **Fixed** + * Improved setup of variable block Jacobian preconditioner used for elasticity with faults to reduce runtime. + * Fix several typos and update a few diagrams in the documentation. + +### Version 4.1.0 + +* **Changed** + * Improved the default preconditioners for poroelasticity for improved scalability. + * Improved the default preconditioners for elasticity with faults for improved scalability. + * Replaced use of Cubit journal files with Cubit Python scripts for several examples, and use the skeleton sizing function to increase cell size with distance from the fault. + * Removed ParaView Python scripts (replaced by `pylith_viz`) +* **Added** + * New 2D and 3D crustal strike-slip faults examples based on the 2019 Ridgecrest earthquake. + * New 2D subduction zone outer-rise faulting example examining poroelastic response to bending stresses. + * New `pylith_viz` utility for plotting PyLith results. + * Updated `examples/strikeslip-2d` and `examples/reverse-2d` to demonstrate use of uniform refinement and higher order discretizations to improve resolution of solution. + * Documentation + * Developer Guide: Added description of the process for adding event logging and evaluating performance, including performance logging. + * Developer Guide: Added checklist for what is needed when contributing examples. +* **Fixed** + * Updated `examples/subduction-3d` Steps 6, 7, and 8 to work with PyLith v3+. + * Fix performance bottleneck when reading Gmsh files. + * Remove extra (wrong) kernels for poroelasticity when using state variables. + * Update Python unit tests setup for compatibility with the current unittest API (use `load_tests()`). + +### Known issues + +* The new default preconditioner for simulations using elasticity and faults can cause convergence issues when running in parallel in which fault faces lie on the boundaries between processors. The workaround is to use the previous preconditioner provided in `share/settings/solver_fault_fieldsplit.cfg`. +* The default PETSc options provide a computationally expensive preconditioner when solving incompressible elasticity problems. We expect to have a more optimal preconditioner in the next release. + +## Contributors + +* Brad Aagaard ![ORCID iD](/_static/images/ORCIDiD_icon32x32.png){w=16px}[0000-0002-8795-9833](https://orcid.org/0000-0002-8795-9833) +* Matthew Knepley ![ORCID iD](/_static/images/ORCIDiD_icon32x32.png){w=16px}[0000-0002-2292-0735](https://orcid.org/0000-0002-2292-0735) +* Charles Williams ![ORCID iD](/_static/images/ORCIDiD_icon32x32.png){w=16px}[0000-0001-7435-9196](https://orcid.org/0000-0001-7435-9196) +* Daniel Douglas ![ORCID iD](/_static/images/ORCIDiD_icon32x32.png){w=16px}[0000-0002-7871-018X](https://orcid.org/0000-0002-7871-018X) +* Evan Marschall ![ORCID iD](/_static/images/ORCIDiD_icon32x32.png){w=16px}[0009-0003-0916-6656](https://orcid.org/0009-0003-0916-6656) +* Zechao Zhuo ![ORCID iD](/_static/images/ORCIDiD_icon32x32.png){w=16px}[0000-0002-8163-5731](https://orcid.org/0000-0002-8163-5731) diff --git a/setup.cfg b/setup.cfg index e8e4ebb283..d62805fc7d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -4,7 +4,7 @@ tag_date = 0 [metadata] name = pylith -version = 4.1.0 +version = 4.1.1 author = Brad Aagaard, Matthew Knepley, Charles Williams author_email = baagaard@usgs.gov, knepley@buffalo.edu, c.williams@gns.cri.nz description = Finite-element software for modeling crustal deformation with an emphasis on earthquake faulting. From 1e6b35ef12ff8c903e8f4b940b147908ceae0c29 Mon Sep 17 00:00:00 2001 From: Brad Aagaard Date: Sun, 9 Jun 2024 10:05:24 -0600 Subject: [PATCH 8/8] Set DOI for v4.1.1. --- CITATION.cff | 2 +- README.md | 2 +- configure.ac | 2 +- docs/intro/preface.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index a521bac0ec..5039c4857a 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -22,7 +22,7 @@ authors: orcid: "https://orcid.org/0000-0001-7435-9196" identifiers: - type: doi - value: 10.5281/zenodo.11479383 + value: 10.5281/zenodo.11534872 repository-code: "https://github.com/geodynamics/pylith" url: "https://geodynamics.org/resources/pylith" keywords: diff --git a/README.md b/README.md index f9591b4d7d..3d73c9993f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # PyLith -[![DOI](https://www.zenodo.org/badge/DOI/10.5281/zenodo.11479383.svg)](https://doi.org/10.5281/zenodo.11479383) +[![DOI](https://www.zenodo.org/badge/DOI/10.5281/zenodo.11534872.svg)](https://doi.org/10.5281/zenodo.11534872) [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/geodynamics/pylith/blob/main/LICENSE.md) [![Build Status](https://dev.azure.com/baagaard-usgs/pylith/_apis/build/status/geodynamics.pylith?branchName=main)](https://dev.azure.com/baagaard-usgs/pylith/_build/latest?definitionId=2&branchName=main) [![codecov](https://codecov.io/gh/geodynamics/pylith/branch/master/graph/badge.svg?token=JiwLVB64EF)](https://codecov.io/gh/geodynamics/pylith) diff --git a/configure.ac b/configure.ac index 2fc70a4645..76cf34a13b 100644 --- a/configure.ac +++ b/configure.ac @@ -173,7 +173,7 @@ CIT_FUNCTIONSTRING dnl VERSION CIG_PKG_GIT(PYLITH) AC_DEFINE_UNQUOTED([PYLITH_VERSION], ["$PACKAGE_VERSION"], [Define PyLith version]) -AC_DEFINE_UNQUOTED([PYLITH_DOI], ["10.5281/zenodo.11479383"], [Define PyLith doi]) +AC_DEFINE_UNQUOTED([PYLITH_DOI], ["10.5281/zenodo.11534872"], [Define PyLith doi]) dnl ENDIANNESS AC_C_BIGENDIAN diff --git a/docs/intro/preface.md b/docs/intro/preface.md index 60c0102ac6..bf594d1451 100644 --- a/docs/intro/preface.md +++ b/docs/intro/preface.md @@ -17,7 +17,7 @@ The following peer-reviewed paper discusses the development of PyLith: To cite the software and manual, use: -- Aagaard, B., M. Knepley, C. Williams (2024a), *PyLith v4.1.1.* Davis, CA: Computational Infrastructure of Geodynamics. DOI: 10.5281/zenodo.11479383. +- Aagaard, B., M. Knepley, C. Williams (2024a), *PyLith v4.1.1.* Davis, CA: Computational Infrastructure of Geodynamics. DOI: 10.5281/zenodo.11534872. - Aagaard, B., M. Knepley, C. Williams (2024b), *PyLith Manual, Version 4.1.1.* Davis, CA: Computational Infrastructure of Geodynamics. https://pylith.readthedocs.io/en/v4.1.1