From b047fa3a2b3bda56b224e66451217356f4c62a31 Mon Sep 17 00:00:00 2001 From: nmannall Date: Wed, 20 Dec 2023 12:38:04 +0000 Subject: [PATCH] Refactor existing model tests to use pytest --- requirements.txt | 5 + .../hertzian_dipole_fs_analytical.in | 8 ++ .../data/models_basic/2D_ExHyHz/2D_ExHyHz.in | 8 ++ .../models_basic/2D_ExHyHz/2D_ExHyHz_ref.h5 | Bin 0 -> 42872 bytes .../data/models_basic/2D_EyHxHz/2D_EyHxHz.in | 8 ++ .../models_basic/2D_EyHxHz/2D_EyHxHz_ref.h5 | Bin 0 -> 42872 bytes .../data/models_basic/2D_EzHxHy/2D_EzHxHy.in | 8 ++ .../models_basic/2D_EzHxHy/2D_EzHxHy_ref.h5 | Bin 0 -> 42872 bytes .../cylinder_Ascan_2D/cylinder_Ascan_2D.in | 13 ++ .../cylinder_Ascan_2D_ref.h5 | Bin 0 -> 27608 bytes .../hertzian_dipole_dispersive.in | 12 ++ .../hertzian_dipole_dispersive_ref.h5 | Bin 0 -> 49736 bytes .../hertzian_dipole_fs/hertzian_dipole_fs.in | 8 ++ .../hertzian_dipole_fs_ref.h5 | Bin 0 -> 49736 bytes .../hertzian_dipole_hs/hertzian_dipole_hs.in | 11 ++ .../hertzian_dipole_hs_ref.h5 | Bin 0 -> 49736 bytes .../magnetic_dipole_fs/magnetic_dipole_fs.in | 8 ++ .../magnetic_dipole_fs_ref.h5 | Bin 0 -> 49736 bytes tests/test_models.py | 135 ++++++++++++++++++ tests/utilities/data.py | 53 +++++++ tests/utilities/plotting.py | 85 +++++++++++ 21 files changed, 362 insertions(+) create mode 100755 tests/data/models_analytical/hertzian_dipole_fs_analytical.in create mode 100644 tests/data/models_basic/2D_ExHyHz/2D_ExHyHz.in create mode 100644 tests/data/models_basic/2D_ExHyHz/2D_ExHyHz_ref.h5 create mode 100644 tests/data/models_basic/2D_EyHxHz/2D_EyHxHz.in create mode 100644 tests/data/models_basic/2D_EyHxHz/2D_EyHxHz_ref.h5 create mode 100644 tests/data/models_basic/2D_EzHxHy/2D_EzHxHy.in create mode 100644 tests/data/models_basic/2D_EzHxHy/2D_EzHxHy_ref.h5 create mode 100644 tests/data/models_basic/cylinder_Ascan_2D/cylinder_Ascan_2D.in create mode 100644 tests/data/models_basic/cylinder_Ascan_2D/cylinder_Ascan_2D_ref.h5 create mode 100755 tests/data/models_basic/hertzian_dipole_dispersive/hertzian_dipole_dispersive.in create mode 100644 tests/data/models_basic/hertzian_dipole_dispersive/hertzian_dipole_dispersive_ref.h5 create mode 100755 tests/data/models_basic/hertzian_dipole_fs/hertzian_dipole_fs.in create mode 100644 tests/data/models_basic/hertzian_dipole_fs/hertzian_dipole_fs_ref.h5 create mode 100755 tests/data/models_basic/hertzian_dipole_hs/hertzian_dipole_hs.in create mode 100644 tests/data/models_basic/hertzian_dipole_hs/hertzian_dipole_hs_ref.h5 create mode 100755 tests/data/models_basic/magnetic_dipole_fs/magnetic_dipole_fs.in create mode 100644 tests/data/models_basic/magnetic_dipole_fs/magnetic_dipole_fs_ref.h5 create mode 100644 tests/test_models.py create mode 100644 tests/utilities/data.py create mode 100644 tests/utilities/plotting.py diff --git a/requirements.txt b/requirements.txt index 8a1ca814..916c8186 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,4 +19,9 @@ numpy-stl terminaltables tqdm wheel +pytest +pytest-benchmark +pytest-benchmark[histogram] +pytest-mpi +pytest-regressions git+https://github.com/craig-warren/PyEVTK.git diff --git a/tests/data/models_analytical/hertzian_dipole_fs_analytical.in b/tests/data/models_analytical/hertzian_dipole_fs_analytical.in new file mode 100755 index 00000000..b3976b4a --- /dev/null +++ b/tests/data/models_analytical/hertzian_dipole_fs_analytical.in @@ -0,0 +1,8 @@ +#title: Hertzian dipole in free-space +#domain: 0.100 0.100 0.100 +#dx_dy_dz: 0.001 0.001 0.001 +#time_window: 3e-9 + +#waveform: gaussianprime 1 1e9 myWave +#hertzian_dipole: z 0.050 0.050 0.050 myWave +#rx: 0.070 0.070 0.070 diff --git a/tests/data/models_basic/2D_ExHyHz/2D_ExHyHz.in b/tests/data/models_basic/2D_ExHyHz/2D_ExHyHz.in new file mode 100644 index 00000000..3c37b9c3 --- /dev/null +++ b/tests/data/models_basic/2D_ExHyHz/2D_ExHyHz.in @@ -0,0 +1,8 @@ +#title: 2D test Ex, Hy, Hz components +#domain: 0.001 0.100 0.100 +#dx_dy_dz: 0.001 0.001 0.001 +#time_window: 3e-9 + +#waveform: gaussiandot 1 1e9 myWave +#hertzian_dipole: x 0 0.050 0.050 myWave +#rx: 0 0.070 0.070 diff --git a/tests/data/models_basic/2D_ExHyHz/2D_ExHyHz_ref.h5 b/tests/data/models_basic/2D_ExHyHz/2D_ExHyHz_ref.h5 new file mode 100644 index 0000000000000000000000000000000000000000..612a80153b2fb5bc095fad0474fac8aedb0bb4f3 GIT binary patch literal 42872 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 KkpHq6=>Gv9Bx`K| literal 0 HcmV?d00001 diff --git a/tests/data/models_basic/2D_EyHxHz/2D_EyHxHz.in b/tests/data/models_basic/2D_EyHxHz/2D_EyHxHz.in new file mode 100644 index 00000000..fb1d2678 --- /dev/null +++ b/tests/data/models_basic/2D_EyHxHz/2D_EyHxHz.in @@ -0,0 +1,8 @@ +#title: 2D test Ey, Hx, Hz components +#domain: 0.100 0.001 0.100 +#dx_dy_dz: 0.001 0.001 0.001 +#time_window: 3e-9 + +#waveform: gaussiandot 1 1e9 myWave +#hertzian_dipole: y 0.050 0 0.050 myWave +#rx: 0.070 0 0.070 diff --git a/tests/data/models_basic/2D_EyHxHz/2D_EyHxHz_ref.h5 b/tests/data/models_basic/2D_EyHxHz/2D_EyHxHz_ref.h5 new file mode 100644 index 0000000000000000000000000000000000000000..b453cbbb2e6284d1d8657a508c519ae2519c190a GIT binary patch literal 42872 zcmeIa2|QKbzyE&>iI9vbA)1s#X(UnRz4tk1$DuTcl4ev=DP^8hC__>rLW86v5oO-f zS$il=QlT`{Joh_&;`_bd&-Z@s_x|ti{_f*{@3kL~W9>D)*ILiL_FCt$-mfFh$<9G} z$jBkQUzfZ*PnI|AkK6t~Kl`p7Cx55($NTfW`fjB9!q~pBQ2O_c6i=D=D^I&GeORCU z(K5diX7`067khi2q-4MS{;;na?~~l`JNf>Ef$)D70Vn(U=&u1U?i+Rgd}{8SXZ@5irc?A14kf2IA^j@%!1MC$@Ku9l?#Gdmjp!p<)QO1#;9{ZW+M z%k!KAS8wqST<7oi8v}2cq|M*W+DJU(|v68iiu{ul23aV4JDU+im0?E6UU`$+8j^x0P(ZT*-2O;_Yi|Ji3) z>L0Z8t*DpbuSBi?9R8Jq%pW{`0)KbtAKLHhZ>gKz$yqg#R!TgxzJ3n+gQK5hLj5Z8 zcjND?*Z*AqT2JUhZ{y*CN>x%w&P5zM}C7A)g*z~`r{qK=iUqWc#dj9A4x_|e{>C5l8F5xou z*L^>4r~ZupVCX6k+DY-G|FYYy)&Fg%-~NHV_&I~$>3y#(Z*gD0`pf-!JpaM&{Ew~X zXe&hiVAc0v`?>W$Uh^qtQ>L2pBv0b^^=n=GbxpGy9k_aH;As1uqgVNF3h?(^?f1u< z+`rxo{auXbw0cWm@H%flyLAEnzZTBE<&3A;m+!K}XqMSzv&pl}CibQL4gysECOQxq zATU5+fWQEO0RjUA1_%rg7$7h}V1U2?fdK*o1pY4w{Ihd?8{OZ=`_EVYFPa*t`rnX% z6mQVqoD=r@hhp`959UGNn10VA-aqsY4a}qeh7bQgvCDrxNA6!wx<~zOBmL)(e>ju= zHtRnW`+bfq)#tn5@j^%bHq+luVPCxYPyP50HTFNaQon!T&%FNX9~<=BKejXAmwW7= z`p15q4}0}Zf?sFGfAv2pNbG3yQ2(v#e!0hf+4^<;L;uh}@QWPI{B;#s|E|sB{Wae2 z!RXKV9sVPK$e;ZT|7^eP9{bx~|NQ>jRt94K(+T`}o$H@%z~FC3zGcTB?y~vu|QZ^(h$obtwIMnf_2l zlK-oy>S+Bw-}7kRaCzSFy?tf}Nxm8W%9oaw{==etUwIj+(MG?EbgK6i{UcE8`zHCT zu;Gok#XMf$g#VX?2JQz43=kL~FhF2{zyN^(0s{mF2n-MyATU5+fWQEO0RjUA1_%rg z7$ETPB=GxeT(0lrQSzI!3IBG*{*zP0>fbJ>-Iu*=-oIULbYJ$yzns$k>*f0nOnJL) z{`LI+)PCPm;{5)U|C;c>?(A6B?)QlP|9y7+U&o_+(EyKMzwiC+i;$5bHVp9impsn( zxnl<2mtTG*8L5M*{~hMX?>-Lv9U#EtbvrM@zOK(}&f9XnS?T8W=I2E+SkH5vmObMp zwH!Dxr^VmtXN&vL;Fc=4*p{z(2U}Q71#1tgYKik8TlQUSZwbjZ#iXw(U{^kCVzX?< zU@;@SF+Dp1Y}V}B+FhR78o@UML8Uy{h@>ST=aqP-62bsyc$YQ88w2`-#CsuyniaW z8?q+tr1>QKc^RoZX%l%_V=rl27E7+tNF~=aWRog8i%8Y9i)4*P9XVQ`CSNRnKn`{8 zA=MxAC^xks)aK9X)XEillzGv8C|zDSEr3KhlX?Hb}qXY|DPG$x8i z=}i|KG1lT+3lOpXW)HE)#x>%o*+F94&*9>A&I#gVorB`6joIQWE+@r98%o7hx2wdX z;+w_My`0!x?vZ%e!`I@PkRRfLuX4a}tO|&)9}c|ljRqw0pDv8thMnK+aBg zuwQBwFrOU&78vXS8LOj#f^HHRYn2A#T8;wMmXn~;x)fNNUjb1?4d8kq0NS(e0iz|| z;K+#g;FFaUy}?eNo|UIUQ=Y?Vm0kMu)Nd2$o-Q-m!ODU@C}&6Cb`a20q&?{6^L%JN zFMzJ#@1}DOMbeeR1p3jU6xzEqlfLVDobFjwL|?BfrLTrn(ld|O(O<@qbfkJK-L~l= zy?FKuI(+*_IxJm^xl}rs(Nh}Acok_dvl4Webr%eoYvU&|6T7A|8+zw3g@OeP`2%8D zSrOB?ayer-Y7NscZ8P(|XczNxegvcRD3)1Xp2Q^89%MSDvKWos$C*WDh0MCqB}^E< zoC&>L%^Y3bz@)j7j5zWJqx7|niMjNc8Cmt388hTFb9SK=n_?%&CVMKfOLK;?+z>6c z=%@}Gxy*odvY)^fc$l#Eht1jc!4|A)o()^I(UG0MTEOn!=f=M5TE{OE~R{HEUc8PNnYxR?0BgG7>UU`enxq6?yf3K6hpz)loUfs)X7k^~WFZ{v&+$PPv zpayY{<_g@~TqSOw?l7(PkK}gw>2do;8gdiFr zor`ap&7H}g%eBYaaAO1PIH{#h+<0e%vz&u+uO^AOIl7CvlPb%&;Zj~)ch4&BRofb_ zr)dMHd&Zv&*teC_ShJmLpRD-Cr3@+noCRb&i#X0*Q;R>>{x%m}Gxij_0 zxSE5) z?Gr??&E}$5O&ih2C5R|2ZL!F?!AI256(Fj5w_8MQj}(1h7cUYE4~RZbNE4~_W{KVx z9T!C|JSjT;__U~Q&3VxX?viNQq-v4#y6Yl*f0IZyn-C@Lr$x2CH${^T?usT}Z5R2^ z?G$ax>K1j}ej%Fiu}5V7=A9@F`y^7{`%QFYFwbpJwUpbX6*6v0uVvldte10>V+Xq# zPf&2{@Ezjjn4;)*r%=g_C{}h$NFVBk`m4B=PaWna)jrIvI!M)R(q~n-LB48kxz%cJ z#Xr^Dd?%~BHQ1`VeY010lQLI#8>Xo422*No_jaqf-PTfbOFp9Nws5Gbo599mZtmqO zZcAPcb#qf4>Q-*3?3Qkzu)0CeV;|QR6dB#?RX=qZGI){;XN0{8a@%pPw5aDjcXU#%HI`zymeFbES(Xp zcc4VGyIMpawl#=)Kh=s}`B#Y+-Mu8@S(SM9ZiPRSP~Zq5;Vaj~Mr>Il)L&JfX?g@GdF`t_nqR^FlowTncX`2x}9$95v+Bui11-84~& z(nL}3V|@{PLre7Nma-`9t*nTIKe?)OJa)|~x#3Ec)w>SsEpy$tKF{^$=u}r?c!X=> zQD0Z*gO0A()hD{X9Ifb@yzQ>b5AkuA1-ULR!$&qRlsPK{I)``CZ~Z-(MN^J3gVzJ5 zU@DK@o-~||bDF|hud-u(ZhNp7&-$^={$Z?eb^;r6_8?oqWwYOk3fM@~64r9{CH5y& z!(MsR$l6b)SO=pU?8DZ(tf}QAw#BuZT~g z7WaCy7Ux#2#Z7yo#Tlv&=Tb%v=Ymv*b31ypxTROMxcxh|xVwg0oct9{j$WY2ZLiee zcw;oU$Gg=zjTSX-|6n!l#2i%)Ss`g>rwaEib|^PCNtv4*r^GGUrO3JZ4B>L^6}VD8 zdCsC&j@wl=h*J%h<(ABs;l6y8;*3jqoKnLNHbn0mtGDGdJN)VgHg3>6R@JeW-4gYR z)vkHYYJKcxYmFbX_g8eV?~@;}zV&Ua^@ls`hKaY>SIcg&;VBGzyG6`Cmm%2<8;lJP zm8|*o_3Tx}>uk%S8dk2bip9QPW_1@|ViPMau$1n3wl}VXUHSDi+q<=x9rxxW3%2L8 z%`$ncZh8(ocb(&qVgco(b$)?Q!h&Dnqt)<7jr}1UHG=(~Hk{qDOOvf$ zr_Mh1R%MGc*KQyFGo zv6vB>l1$81jKMsbnHfJCm|17*m~7u`%pBty#^z%cbBn5EoX%7*N7KuhIk6X*iiq=! zW7IijWXf5_>%?j1W^FNZ@lhf3eCSDLt4%(0FF21mUwNE4EtA7kESvD$^A)7*&SkGNd{m&iD%Yq*h>8GL3n6(~KFt-jwP3X2K+M7)Jf20kgDVG~>QjpP6B##~AjEVnQ$JFiJ5anNraRCUl}U6Zb=l zNxq}W_+8Xs=BBAL_B+%Vo|h`K-EkO`VXnfo84P7gHIx~3c_rrAk0DI$Ck00JgFJKo z-C%}(FURcuGKj&X1~E#CvP_qz40Cg=G;?N#6!XQ2$0$_(pp%||qxJN^(iMw8)0rtB zY53-QdWFtA`nc~KdUt6L9Vz#kp0(^HJ*VP1yG##7{Xw4a7diEVs z^8K2iCr`lX1E7U|65dR&GHs%@yBp}XBlUFS(mEPdzfSAls-;WPYv|;aSLyn()wJyU zE3|q|CH>*xWxCC~f-aqVi5{g|PFwX}ppQ3~(bi|q)13*W^ww?X=(&qZ=pS}x>60dB z=&$;x=_iV(=!w$BboskN+T!&|TBECgw&}>Hx3!<34?oPKl^^EP*yH20?TZ|`=KV3+ z_s3Csh2l~A@`!AD>7*lcmSq-A3lG!Fd^2h7JsEUhdOCghd>U;)AEKjPAEYl2J4hd% zmP!{aPN8cB!3o^s49a^h|?zI@&#su0Ie< zH#Nu5jj}QHG@EETJ2Z-pyc$Ud@gnK!`4O~IY&e~ZhtVt5!|3r#Lg_+eujCno&`Wmi zrYEWHqK94FNpt89y5mC-osqGP_IC`VHC}F^v$8kSYR&<)i?ly|sB{ypzHuWx*Q8Fd*xqBWc6j5p>i`ZFL(Z$FqWDUqXvYI1bYoVeMeM&V4X(RvXBM?*ZGjcfq`! zcYsRfZ6GeY1roScQ2zWT*r;+7h|F#P88;5NZDGObOa@%6rNPLj0BlhLfImwN*85Ok z+5r+2UnaoWCphRCi37?R0}(r0fUvk3v~)Cq6`D<86Wj>0_B4RaSL=cQn>ui3N*!?U zxefw~uYm&(YJu;VTF|_t2AH0_3O2P@gY8DupxL_$%)D>~WWA~c0alfOxAQWPr7OS{ z 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 JB=GkM{6Cz8Yr_Bl literal 0 HcmV?d00001 diff --git a/tests/data/models_basic/cylinder_Ascan_2D/cylinder_Ascan_2D.in b/tests/data/models_basic/cylinder_Ascan_2D/cylinder_Ascan_2D.in new file mode 100644 index 00000000..da294270 --- /dev/null +++ b/tests/data/models_basic/cylinder_Ascan_2D/cylinder_Ascan_2D.in @@ -0,0 +1,13 @@ +#title: A-scan from a metal cylinder buried in a dielectric half-space +#domain: 0.240 0.210 0.002 +#dx_dy_dz: 0.002 0.002 0.002 +#time_window: 3e-9 + +#material: 6 0 1 0 half_space + +#waveform: ricker 1 1.5e9 my_ricker +#hertzian_dipole: z 0.100 0.170 0 my_ricker +#rx: 0.140 0.170 0 + +#box: 0 0 0 0.240 0.170 0.002 half_space +#cylinder: 0.120 0.080 0 0.120 0.080 0.002 0.010 pec diff --git a/tests/data/models_basic/cylinder_Ascan_2D/cylinder_Ascan_2D_ref.h5 b/tests/data/models_basic/cylinder_Ascan_2D/cylinder_Ascan_2D_ref.h5 new file mode 100644 index 0000000000000000000000000000000000000000..881f7173ff552358947e2f62d26cb75545093ae7 GIT binary patch literal 27608 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 literal 0 HcmV?d00001 diff --git a/tests/data/models_basic/hertzian_dipole_dispersive/hertzian_dipole_dispersive.in b/tests/data/models_basic/hertzian_dipole_dispersive/hertzian_dipole_dispersive.in new file mode 100755 index 00000000..a49754d7 --- /dev/null +++ b/tests/data/models_basic/hertzian_dipole_dispersive/hertzian_dipole_dispersive.in @@ -0,0 +1,12 @@ +#title: Hertzian dipole in water +#domain: 0.100 0.100 0.100 +#dx_dy_dz: 0.001 0.001 0.001 +#time_window: 3e-9 + +#waveform: gaussiandot 1 1e9 myWave +#hertzian_dipole: z 0.050 0.050 0.050 myWave +#rx: 0.070 0.070 0.070 + +#material: 4.9 0 1 0 myWater +#add_dispersion_debye: 1 75.2 9.231e-12 myWater +#box: 0 0 0 0.100 0.100 0.100 myWater diff --git a/tests/data/models_basic/hertzian_dipole_dispersive/hertzian_dipole_dispersive_ref.h5 b/tests/data/models_basic/hertzian_dipole_dispersive/hertzian_dipole_dispersive_ref.h5 new file mode 100644 index 0000000000000000000000000000000000000000..49f261c14e73fb76b18ecf5c35ba5b4af57c4bcb GIT binary patch literal 49736 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

+@N})aNWJhMO)*Yiv%Qtijo?ti}skkDDu2E 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 S*1)0ETKJAq2Q}Z-!T$%+56dzD literal 0 HcmV?d00001 diff --git a/tests/data/models_basic/hertzian_dipole_fs/hertzian_dipole_fs.in b/tests/data/models_basic/hertzian_dipole_fs/hertzian_dipole_fs.in new file mode 100755 index 00000000..5c5ecca7 --- /dev/null +++ b/tests/data/models_basic/hertzian_dipole_fs/hertzian_dipole_fs.in @@ -0,0 +1,8 @@ +#title: Hertzian dipole in free-space +#domain: 0.100 0.100 0.100 +#dx_dy_dz: 0.001 0.001 0.001 +#time_window: 3e-9 + +#waveform: gaussiandot 1 1e9 myWave +#hertzian_dipole: z 0.050 0.050 0.050 myWave +#rx: 0.070 0.070 0.070 diff --git a/tests/data/models_basic/hertzian_dipole_fs/hertzian_dipole_fs_ref.h5 b/tests/data/models_basic/hertzian_dipole_fs/hertzian_dipole_fs_ref.h5 new file mode 100644 index 0000000000000000000000000000000000000000..0c526510bcc66e90762974e4fce5bcaf3b7f47e3 GIT binary patch literal 49736 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 k<~}L5a>t1TiMOe+@yiIN4?AYiww=G3u7%> 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 Jx5^_8@c%Vk`Z@pr literal 0 HcmV?d00001 diff --git a/tests/data/models_basic/magnetic_dipole_fs/magnetic_dipole_fs.in b/tests/data/models_basic/magnetic_dipole_fs/magnetic_dipole_fs.in new file mode 100755 index 00000000..6088be9a --- /dev/null +++ b/tests/data/models_basic/magnetic_dipole_fs/magnetic_dipole_fs.in @@ -0,0 +1,8 @@ +#title: Magnetic dipole in free-space +#domain: 0.100 0.100 0.100 +#dx_dy_dz: 0.001 0.001 0.001 +#time_window: 3e-9 + +#waveform: gaussiandot 1 1e9 myWave +#magnetic_dipole: z 0.050 0.050 0.050 myWave +#rx: 0.070 0.070 0.070 diff --git a/tests/data/models_basic/magnetic_dipole_fs/magnetic_dipole_fs_ref.h5 b/tests/data/models_basic/magnetic_dipole_fs/magnetic_dipole_fs_ref.h5 new file mode 100644 index 0000000000000000000000000000000000000000..475b6724f7c71120b18d3c39fec26ee66079a1cc GIT binary patch literal 49736 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 J@YmY!_. + +import logging +import sys +from pathlib import Path + +import h5py +import matplotlib.pyplot as plt +import numpy as np +import pytest + +import gprMax +from testing.analytical_solutions import hertzian_dipole_fs +from tests.utilities.data import get_data_from_h5_file, calculate_diffs +from tests.utilities.plotting import plot_dataset_comparison, plot_diffs + +from gprMax.utilities.logging import logging_config + +logger = logging.getLogger(__name__) +logging_config(name=__name__) + +if sys.platform == "linux": + plt.switch_backend("agg") + + +"""Compare field outputs + + Usage: + cd gprMax + pytest tests/test_models.py +""" + +# Specify directory containing basic models to test +BASIC_MODELS_DIRECTORY = Path(__file__).parent / "data" / "models_basic" + +# List of available basic test models +BASIC_MODELS = [ + "2D_ExHyHz", + "2D_EyHxHz", + "2D_EzHxHy", + "cylinder_Ascan_2D", + "hertzian_dipole_fs", + "hertzian_dipole_hs", + "hertzian_dipole_dispersive", + "magnetic_dipole_fs", +] + +# Specify directory containing analytical models to test +ANALYTICAL_MODELS_DIRECTORY = Path(__file__).parent / "data" / "models_analytical" + +# List of available analytical models +ANALYTICAL_MODELS = ["hertzian_dipole_fs_analytical"] + +FIELD_COMPONENTS_BASE_PATH = "/rxs/rx1/" + + +def run_test(model_name, input_base, data_directory, analytical_func=None, gpu=None, opencl=None): + input_filepath = input_base.with_suffix(".in") + reference_filepath = Path(f"{input_base}_ref.h5") + + output_base = data_directory / model_name + output_filepath = output_base.with_suffix(".h5") + + # Run model + gprMax.run(inputfile=input_filepath, outputfile=output_filepath, gpu=gpu, opencl=opencl) + + test_time, test_data = get_data_from_h5_file(output_filepath) + + if analytical_func is not None: + ref_time = test_time + ref_data = analytical_func(output_filepath) + else: + ref_time, ref_data = get_data_from_h5_file(reference_filepath) + + fig1 = plot_dataset_comparison(test_time, test_data, ref_time, ref_data, model_name) + fig1.savefig(output_base.with_suffix(".png"), dpi=150, format="png", bbox_inches="tight", pad_inches=0.1) + + # Required to correctly calculate diffs + assert test_time.shape == ref_time.shape + assert np.all(test_time == ref_time) + assert test_data.shape == ref_data.shape + + data_diffs = calculate_diffs(test_data, ref_data) + max_diff = round(np.max(data_diffs), 2) + + fig2 = plot_diffs(test_time, data_diffs) + fig2.savefig(Path(f"{output_base}_diffs.png"), dpi=150, format="png", bbox_inches="tight", pad_inches=0.1) + + logger.info(f"Output data folder: {data_directory}") + + assert max_diff <= 0 + + +def calc_hertzian_dipole_fs_analytical_solution(filepath): + with h5py.File(filepath, "r") as file: + # Tx/Rx position to feed to analytical solution + rx_pos = file[FIELD_COMPONENTS_BASE_PATH].attrs["Position"] + tx_pos = file["/srcs/src1/"].attrs["Position"] + rx_pos_relative = ((rx_pos[0] - tx_pos[0]), (rx_pos[1] - tx_pos[1]), (rx_pos[2] - tx_pos[2])) + + # Analytical solution of a dipole in free space + data = hertzian_dipole_fs( + file.attrs["Iterations"], file.attrs["dt"], file.attrs["dx_dy_dz"], rx_pos_relative + ) + return data + + +@pytest.mark.parametrize("model", BASIC_MODELS) +def test_basic_models(model, datadir): + + base_filepath = Path(BASIC_MODELS_DIRECTORY, model, model) + run_test(model, base_filepath, datadir) + + +@pytest.mark.parametrize("model", ANALYTICAL_MODELS) +def test_analyitical_models(model, datadir): + + base_filepath = Path(ANALYTICAL_MODELS_DIRECTORY, model) + run_test(model, base_filepath, datadir, analytical_func=calc_hertzian_dipole_fs_analytical_solution) \ No newline at end of file diff --git a/tests/utilities/data.py b/tests/utilities/data.py new file mode 100644 index 00000000..8d6a3b7e --- /dev/null +++ b/tests/utilities/data.py @@ -0,0 +1,53 @@ +import logging + +import h5py +import numpy as np + +from gprMax.utilities.logging import logging_config + +logger = logging.getLogger(__name__) +logging_config(name=__name__) + + +FIELD_COMPONENTS_BASE_PATH = "/rxs/rx1/" + + +def get_data_from_h5_file(h5_filepath): + with h5py.File(h5_filepath, "r") as h5_file: + # Get available field output component names and datatype + field_components = list(h5_file[FIELD_COMPONENTS_BASE_PATH].keys()) + dtype = h5_file[FIELD_COMPONENTS_BASE_PATH + field_components[0]].dtype + shape = h5_file[FIELD_COMPONENTS_BASE_PATH + str(field_components[0])].shape + + # Arrays for storing field data + if len(shape) == 1: + data = np.zeros((h5_file.attrs["Iterations"], len(field_components)), dtype=dtype) + else: # Merged B-scan data + data = np.zeros((h5_file.attrs["Iterations"], len(field_components), shape[1]), dtype=dtype) + for index, field_component in enumerate(field_components): + data[:, index] = h5_file[FIELD_COMPONENTS_BASE_PATH + str(field_component)] + if np.any(np.isnan(data[:, index])): + logger.exception("Data contains NaNs") + raise ValueError + + max_time = (h5_file.attrs["Iterations"] - 1) * h5_file.attrs["dt"] / 1e-9 + time = np.linspace(0, max_time, num=h5_file.attrs["Iterations"]) + + return time, data + + +def calculate_diffs(test_data, ref_data): + diffs = np.zeros(test_data.shape, dtype=np.float64) + for i in range(test_data.shape[1]): + maxi = np.amax(np.abs(ref_data[:, i])) + diffs[:, i] = np.divide( + np.abs(ref_data[:, i] - test_data[:, i]), maxi, out=np.zeros_like(ref_data[:, i]), where=maxi != 0 + ) # Replace any division by zero with zero + + # Calculate power (ignore warning from taking a log of any zero values) + with np.errstate(divide="ignore"): + diffs[:, i] = 20 * np.log10(diffs[:, i]) + # Replace any NaNs or Infs from zero division + diffs[:, i][np.invert(np.isfinite(diffs[:, i]))] = 0 + + return diffs \ No newline at end of file diff --git a/tests/utilities/plotting.py b/tests/utilities/plotting.py new file mode 100644 index 00000000..6d94aea2 --- /dev/null +++ b/tests/utilities/plotting.py @@ -0,0 +1,85 @@ +from matplotlib import pyplot as plt +import numpy as np + + +def _plot_data(subplots, time, data, label=None, colour="r", line_style="-"): + for i in range(data.shape[1]): + subplots[i].plot(time, data[:, i], colour, lw=2, ls=line_style, label=label) + + +def plot_dataset_comparison(test_time, test_data, ref_time, ref_data, model_name): + fig, ((ex, hx), (ey, hy), (ez, hz)) = plt.subplots( + nrows=3, + ncols=2, + sharex=False, + sharey="col", + subplot_kw=dict(xlabel="Time [ns]"), + figsize=(20, 10), + facecolor="w", + edgecolor="w", + ) + + subplots = [ex, ey, ez, hx, hy, hz] + _plot_data(subplots, test_time, test_data, model_name) + _plot_data(subplots, ref_time, ref_data, f"{model_name} (Ref)", "g", "--") + + ylabels = [ + "$E_x$, field strength [V/m]", + "$H_x$, field strength [A/m]", + "$E_y$, field strength [V/m]", + "$H_y$, field strength [A/m]", + "$E_z$, field strength [V/m]", + "$H_z$, field strength [A/m]", + ] + + x_max = max(np.max(test_time), np.max(ref_time)) + for i, ax in enumerate(fig.axes): + ax.set_ylabel(ylabels[i]) + ax.set_xlim(0, x_max) + ax.grid() + ax.legend() + + return fig + + +def plot_diffs(time, diffs, plot_min=-160): + """Plots ... + + Args: + time: + diffs: + plot_min: minimum value of difference to plot (dB). Default: -160 + + Returns: + plt: matplotlib plot object. + """ + fig, ((ex, hx), (ey, hy), (ez, hz)) = plt.subplots( + nrows=3, + ncols=2, + sharex=False, + sharey="col", + subplot_kw=dict(xlabel="Time [ns]"), + figsize=(20, 10), + facecolor="w", + edgecolor="w", + ) + _plot_data([ex, ey, ez, hx, hy, hz], time, diffs) + + ylabels = [ + "$E_x$, difference [dB]", + "$H_x$, difference [dB]", + "$E_y$, difference [dB]", + "$H_y$, difference [dB]", + "$E_z$, difference [dB]", + "$H_z$, difference [dB]", + ] + + x_max = np.max(time) + y_max = np.max(diffs) + for i, ax in enumerate(fig.axes): + ax.set_ylabel(ylabels[i]) + ax.set_xlim(0, x_max) + ax.set_ylim(plot_min, y_max) + ax.grid() + + return fig \ No newline at end of file