diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 00000000..0535ba1a --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,61 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python +name: test + +on: + push: + branches: [ "unit-test" ] + pull_request: + branches: [ "main" ] + +jobs: + build-matrix: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + toolchain: + - {compiler: gcc, version: 'latest', system: gfortran} + python-version: ["3.12"] + runs-on: ${{ matrix.os }} + container: + image: debian:12.11 + steps: + - uses: actions/checkout@v4 + - name: Install dependencies + shell: bash + run: | + apt-get update + apt-get install -y \ + git \ + wget \ + gfortran \ + cmake \ + make \ + libpng-dev \ + libcairo2-dev \ + libhdf5-dev \ + libcfitsio-dev \ + libx11-dev \ + python3 \ + python3-pip \ + python3-venv + git clone https://github.com/danieljprice/giza + make SYSTEM=gfortran withgiza + python3 -m pip install imagehash pytest numpy --break-system-packages + + - name: Download data snapshots + shell: bash + run: | + mkdir -p test_data && cd test_data + wget -O 2i_00000 "https://zenodo.org/records/10052253/files/2i_00000?download=1" + + + - name: Run unit tests + run: | + export SPLASH_DIR=/__w/splash/splash/ + export PATH=$PATH:$SPLASH_DIR/bin + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SPLASH_DIR/giza/lib + cd test_data + python3 $SPLASH_DIR/scripts/generate_renders_testing.py + pytest -v $SPLASH_DIR/tests/test_figure_hash.py \ No newline at end of file diff --git a/.gitignore b/.gitignore index a59c5efc..5b7f317c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,5 +22,5 @@ Portfile* releasenotes* ChangeLog giza* -tests +tests/*f90 __pycache__ diff --git a/data/config_files/render_testing.defaults b/data/config_files/render_testing.defaults new file mode 100644 index 00000000..90390287 --- /dev/null +++ b/data/config_files/render_testing.defaults @@ -0,0 +1,812 @@ +&DATAOPTS + BUFFER_DATA=F, + ICALCQUANTITIES=F, + IRESCALE=T, + XORIGIN= 3*0.0000000000000000 , + TRACK_STRING=' 0 ', + IDUSTFRAC_PLOT=0 , + IDELTAV_PLOT=0 , + USEFAKEDUSTPARTICLES=F, + / +&PLOTOPTS + IPLOTLINE=F, + LINESTYLE=1 , + LINECOLOUR=1 , + IMARKTYPE=1 ,4 ,17 ,1 ,3 , + 19*1 , + IPLOTPARTOFTYPE=T,F,T, 21*F, + PLOTONRENDERINGS= 2*F,T, 21*F, + IEXACT=0 , + ICOORDSNEW=1 , + IFASTPARTICLEPLOT=T, + IDEFAULTCOLOURTYPE= 24*-1 , + ITYPEORDER=1 ,2 ,3 ,4 ,5 , + 6 ,7 ,8 ,9 ,10 ,11 , + 12 ,13 ,14 ,15 ,16 ,17 , + 18 ,19 ,20 ,21 ,22 ,23 , + 24 , + USETYPEINCONTOURS=T, 23*F, + IPLOTERRBARS=F, + ILOCERRBARS= 512*0 , + HFACMARKERS= 1.0000000000000000 , + ERRORBARTYPE=0 , + ISMOOTH_PARTICLE_PLOTS=0 , + RREF= 1.0000000000000000 , + BETAFLARE= 1.2500000000000000 , + MSTARI= 1.0000000000000000 , + / +&PAGEOPTS + IAXIS=0 , + NACROSS=1 , + NDOWN=1 , + INTERACTIVE=T, + IADAPT=F, + IADAPTCOORDS=F, + NSTEPSPERPAGE=1 , + ICOLOUREACHSTEP=T, + ICHANGESTYLES=F, + TILE=T, + IPAPERSIZE=0 , + PAPERSIZEX= 0.0000000000000000 , + ASPECTRATIO= 0.0000000000000000 , + IPLOTLEGEND=T, + IPLOTSTEPLEGEND=F, + HPOSLEGEND= 0.94999999999999996 , + VPOSLEGEND= 2.0000000000000000 , + IPLOTTITLES=F, + HPOSTITLE= 0.50000000000000000 , + VPOSTITLE= 1.0000000000000000 , + FJUSTTITLE= 0.50000000000000000 , + LEGENDTEXT='t= ', + IPAGECOLOURS=0 , + CHARHEIGHT= 1.0000000000000000 , + LINEWIDTH=0 , + FJUSTLEGEND= 1.0000000000000000 , + IPLOTLEGENDONLYONPANEL=0 , + IPLOTSCALE=F, + DXSCALE= 1.0000000000000000 , + SCALETEXT='1 unit ', + HPOSSCALE= 0.50000000000000000 , + VPOSSCALE= 1.0000000000000000 , + ISCALEPANEL=0 , + IUSEBACKGROUNDCOLOURFORAXES=F, + USESQUAREXY=T, + MAXLINESTYLE=5 , + MODLINESTYLE=1 , + MAXCOLOUR=16 , + MODCOLOUR=1 , + USECOLUMNORDER=T, + IPAPERSIZEUNITS=1 , + ADJUSTLIMITSTODEVICE=F, + ALPHALEGEND= 0.50000000000000000 , + YSCALEALT= 1.0000000000000000 , + LABELYALT=' ', + XMINOFFSET_TRACK= 3*0.50000000000000000 , + XMAXOFFSET_TRACK= 3*0.50000000000000000 , + XMINPAGEMARGIN= 0.0000000000000000 , + XMAXPAGEMARGIN= 0.0000000000000000 , + YMINPAGEMARGIN= 0.0000000000000000 , + YMAXPAGEMARGIN= 0.0000000000000000 , + LINEPALETTE=0 , + / +&RENDEROPTS + NPIX=0 , + ICOLOURS=2 , + NCONTOURS=30 , + IPLOTCONT_NOMULTI=F, + ICOLOUR_PARTICLES=F, + COLOURBARDISP= 5.0000000000000000 , + INORMALISE_INTERPOLATIONS=F, + IFASTRENDER=F, + IDENSITYWEIGHTEDINTERPOLATION=F, + ICOLOURBARSTYLE=1 , + IPLOTCOLOURBARLABEL=T, + ILABELCONT=F, + PROJLABELFORMAT=' ', + IAPPLYPROJFORMAT=0 , + DOUBLE_RENDERING=F, + IKERNEL=0 , + COLOURBARPOSX= 0.75000000000000000 , + COLOURBARPOSY= 0.69999999999999996 , + COLOURBARLEN= 0.25000000000000000 , + COLOURBARFMTSTR='BCMSTV ', + COLOURBARWIDTH= 2.0000000000000000 , + ICOLOURBARPOS=3 , + RGBFILE='colours.ctb ', + EXACT_RENDERING=F, + IAUTO_DENSITYWEIGHTED=T, + / +&VECTOROPTS + NPIXVEC=40 , + USEBACKGNDCOLORVECPLOT=F, + IPLOTPARTVEC=T, + IVECPLOTLEGEND=T, + HPOSLEGENDVEC= 2.0000000000000000E-002, + VPOSLEGENDVEC= -1.5000000000000000 , + IPLOTSTREAMLINES=F, + IPLOTARROWHEADS=T, + IPLOTSYNCHROTRON=F, + RCRIT= 13.000000000000000 , + ZCRIT= 2.5000000000000000 , + SYNCHROTRONSPECINDEX= 0.80000000000000004 , + UTHERMCUTOFF= -1.0000000000000000 , + IHIDEARROWSWHERENOPARTS=F, + MINPARTFORARROW=1 , + IALLARROWSSAMELENGTH=F, + IVECLEGENDONPANEL=0 , + / +&XSECROTOPTS + XSEC_NOMULTI=F, + XSECPOS_NOMULTI= 0.0000000000000000 , + FLYTHRU=F, + XSECLINEX1= 0.0000000000000000 , + XSECLINEX2= 0.0000000000000000 , + XSECLINEY1= 0.0000000000000000 , + XSECLINEY2= 0.0000000000000000 , + IROTATE=F, + IROTATEAXES=0 , + ANGLEX= 0.0000000000000000 , + ANGLEY= 0.0000000000000000 , + ANGLEZ= 0.0000000000000000 , + XMINROTAXES= 3*0.0000000000000000 , + XMAXROTAXES= 3*0.0000000000000000 , + USE3DPERSPECTIVE=F, + USE3DOPACITYRENDERING=F, + ZOBSERVER= 0.0000000000000000 , + DZSCREENFROMOBSERVER= 0.0000000000000000 , + TAUPARTDEPTH= -1.0000000000000000 , + XSECWIDTH= 0.0000000000000000 , + RENDERSINKS=F, + / +&POWERSPECOPTS + IPOWERSPECY=2 , + IDISORDERED=T, + NWAVELENGTHS=128 , + NFREQSPEC=1 , + NPDFBINS=0 , + FREQMIN= 1.0000000000000000 , + FREQMAX= 128.00000000000000 , + / +&EXACTOPTS + IEXACTPLOTX= 32*0 , + IEXACTPLOTY= 32*0 , + FILENAME_EXACT= 32*' ', + MAXEXACTPTS=1001 , + IEXACTLINECOLOUR= 32*1 , + IEXACTLINESTYLE=1 ,2 ,3 ,4 ,5 , + 0 ,1 ,2 ,3 ,4 ,5 , + 0 ,1 ,2 ,3 ,4 ,5 , + 0 ,1 ,2 ,3 ,4 ,5 , + 0 ,1 ,2 ,3 ,4 ,5 , + 0 ,1 ,2 , + IAPPLYTRANSEXACTFILE=T, + ICALCULATEEXACTERRORS=T, + IPLOTRESIDUALS=F, + FRACINSETRESIDUALS= 0.14999999999999999 , + RESIDUALMAX= 0.0000000000000000 , + IPLOTEXACTONLYONPANEL=0 , + IAPPLYUNITSEXACTFILE=F, + INORMALISEERRORS=1 , + IPLOTEXACTUNDER=F, + EXACTALPHA= 1.0000000000000000 , + / +&EXACTPARAMS + AMPL= 5.0000000000000001E-003, + LAMBDA= 1.0000000000000000 , + PERIOD= 1.0000000000000000 , + IWAVEPLOTY=7 , + IWAVEPLOTX=1 , + XZERO= 0.0000000000000000 , + HTSTAR= 1.0000000000000000 , + ATSTAR= 1.0000000000000000 , + CTSTAR= 1.0000000000000000 , + ALPHATSTAR= 0.0000000000000000 , + BETATSTAR= 0.0000000000000000 , + CTSTAR1= 0.0000000000000000 , + CTSTAR2= 0.0000000000000000 , + POLYK= 1.0000000000000000 , + SIGMA0= 0.0000000000000000 , + NORDER=-1 , + MORDER=0 , + RHOSEDOV= 1.0000000000000000 , + ESEDOV= 1.0000000000000000 , + RHO_L= 1.0000000000000000 , + RHO_R= 0.12500000000000000 , + PR_L= 1.0000000000000000 , + PR_R= 0.10000000000000001 , + V_L= 0.0000000000000000 , + V_R= 0.0000000000000000 , + ISHK=1 , + HFACT= 1.2000000000000000 , + IPROFILE=1 , + MSPHERE= 1.0000000000000000 , 0.0000000000000000 , + RSOFT= 1.0000000000000000 , 0.10000000000000001 , + ICOLPOTEN=0 , + ICOLFGRAV=0 , + MSTAR= 1.0000000000000000 , + RTORUS= 1.0000000000000000 , + DISTORTION= 1.1000000000000001 , + MRING= 1.0000000000000000 , + RRING= 1.0000000000000000 , + VISCNU= 1.0000000000000000E-003, + NFUNC=1 , + FUNCSTRING= 32*' ', + CS= 1.0000000000000000 , + KDRAG= 1.0000000000000000 , + RHOZERO= 1.0000000000000000 , + RDUST_TO_GAS= 0.0000000000000000 , + MPRIM= 1.0000000000000000 , + MSEC= 1.0000000000000000 , + IMAPEXACT= 512*0 , + IAUTO_MAP_COLUMNS=T, + XSHOCK= 0.0000000000000000 , + TOTMASS= 1.0000000000000000 , + MACHS= 50.000000000000000 , + MACHA= 5.0000000000000000 , + USE_SINK_DATA=T, + XPRIM= 3*0.0000000000000000 , + XSEC= 1.0000000000000000 , 2*0.0000000000000000 , + NFILES=1 , + GAMMA_EXACT= 1.6666666666666667 , + GAMMA2_EXACT= 1.0000000000000000 , + USE_GAMMA_EXACT=F, + USE_GAMMA2_EXACT=F, + HONR= 5.0000000000000003E-002, + RPLANET= 1.0000000000000000 , + Q_INDEX= 0.25000000000000000 , + RELATIVISTIC=T, + GEODESIC_FLOW=F, + IS_WIND=T, + CONST1= 8.0000000000000000 , + CONST2= 1.0000000000000000 , + ISPIRAL=1 , + NARMS=1 , + SPIRAL_PARAMS= 0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , + 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , + 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , + 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , + 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , + 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , + 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , + 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , + 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , + 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , + 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 6*0.0000000000000000 , 360.00000000000000 , 5*0.0000000000000000 , + + PHASE= 0.0000000000000000 , + IREAD_WAKEPARAMS=T, + ICLOCKWISE=F, + INONLIN=F, + / +&MULTI + NYPLOTMULTI=4 , + ITRANS= 5*0 ,1 , 3*0 ,1 , 502*0 , + + MULTIPLOTX= 512*1 , + MULTIPLOTY=2 ,3 ,4 ,5 , 508*0 , + + IRENDERMULTI= 512*0 , + IVECPLOTMULTI= 512*0 , + ICONTOURMULTI= 512*0 , + X_SECMULTI= 512*F, + XSECPOSMULTI= 512*0.0000000000000000 , + IUSEALLTYPESMULTI= 512*T, + IPLOTPARTOFTYPEMULTI=T, 24*F,T, 24*F,T, + 24*F,T, 24*F,T, 24*F,T, + 24*F,T, 24*F,T, 24*F,T, + 24*F,T, 24*F,T, 24*F,T, + 24*F,T, 24*F,T, 24*F,T, + 24*F,T, 24*F,T, 24*F,T, + 24*F,T, 24*F,T, 24*F,T, + 24*F,T, 24*F,T, 24*F,T, + 11712*F, + / +&SHAPEOPTS + NSHAPES=0 , + SHAPE(1)%ITYPE=0 , + SHAPE(1)%ICOLOUR=1 , + SHAPE(1)%LINESTYLE=1 , + SHAPE(1)%LINEWIDTH=1 , + SHAPE(1)%IFILLSTYLE=2 , + SHAPE(1)%IUNITS=1 , + SHAPE(1)%IPLOTONPANEL=0 , + SHAPE(1)%XPOS= 0.50000000000000000 , + SHAPE(1)%YPOS= 0.50000000000000000 , + SHAPE(1)%XLEN= 1.0000000000000000 , + SHAPE(1)%YLEN= 1.0000000000000000 , + SHAPE(1)%ANGLE= 0.0000000000000000 , + SHAPE(1)%FJUST= 0.0000000000000000 , + SHAPE(1)%OPACITY= 1.0000000000000000 , + SHAPE(1)%TEXT=' ', + SHAPE(2)%ITYPE=0 , + SHAPE(2)%ICOLOUR=1 , + SHAPE(2)%LINESTYLE=1 , + SHAPE(2)%LINEWIDTH=1 , + SHAPE(2)%IFILLSTYLE=2 , + SHAPE(2)%IUNITS=1 , + SHAPE(2)%IPLOTONPANEL=0 , + SHAPE(2)%XPOS= 0.50000000000000000 , + SHAPE(2)%YPOS= 0.50000000000000000 , + SHAPE(2)%XLEN= 1.0000000000000000 , + SHAPE(2)%YLEN= 1.0000000000000000 , + SHAPE(2)%ANGLE= 0.0000000000000000 , + SHAPE(2)%FJUST= 0.0000000000000000 , + SHAPE(2)%OPACITY= 1.0000000000000000 , + SHAPE(2)%TEXT=' ', + SHAPE(3)%ITYPE=0 , + SHAPE(3)%ICOLOUR=1 , + SHAPE(3)%LINESTYLE=1 , + SHAPE(3)%LINEWIDTH=1 , + SHAPE(3)%IFILLSTYLE=2 , + SHAPE(3)%IUNITS=1 , + SHAPE(3)%IPLOTONPANEL=0 , + SHAPE(3)%XPOS= 0.50000000000000000 , + SHAPE(3)%YPOS= 0.50000000000000000 , + SHAPE(3)%XLEN= 1.0000000000000000 , + SHAPE(3)%YLEN= 1.0000000000000000 , + SHAPE(3)%ANGLE= 0.0000000000000000 , + SHAPE(3)%FJUST= 0.0000000000000000 , + SHAPE(3)%OPACITY= 1.0000000000000000 , + SHAPE(3)%TEXT=' ', + SHAPE(4)%ITYPE=0 , + SHAPE(4)%ICOLOUR=1 , + SHAPE(4)%LINESTYLE=1 , + SHAPE(4)%LINEWIDTH=1 , + SHAPE(4)%IFILLSTYLE=2 , + SHAPE(4)%IUNITS=1 , + SHAPE(4)%IPLOTONPANEL=0 , + SHAPE(4)%XPOS= 0.50000000000000000 , + SHAPE(4)%YPOS= 0.50000000000000000 , + SHAPE(4)%XLEN= 1.0000000000000000 , + SHAPE(4)%YLEN= 1.0000000000000000 , + SHAPE(4)%ANGLE= 0.0000000000000000 , + SHAPE(4)%FJUST= 0.0000000000000000 , + SHAPE(4)%OPACITY= 1.0000000000000000 , + SHAPE(4)%TEXT=' ', + SHAPE(5)%ITYPE=0 , + SHAPE(5)%ICOLOUR=1 , + SHAPE(5)%LINESTYLE=1 , + SHAPE(5)%LINEWIDTH=1 , + SHAPE(5)%IFILLSTYLE=2 , + SHAPE(5)%IUNITS=1 , + SHAPE(5)%IPLOTONPANEL=0 , + SHAPE(5)%XPOS= 0.50000000000000000 , + SHAPE(5)%YPOS= 0.50000000000000000 , + SHAPE(5)%XLEN= 1.0000000000000000 , + SHAPE(5)%YLEN= 1.0000000000000000 , + SHAPE(5)%ANGLE= 0.0000000000000000 , + SHAPE(5)%FJUST= 0.0000000000000000 , + SHAPE(5)%OPACITY= 1.0000000000000000 , + SHAPE(5)%TEXT=' ', + SHAPE(6)%ITYPE=0 , + SHAPE(6)%ICOLOUR=1 , + SHAPE(6)%LINESTYLE=1 , + SHAPE(6)%LINEWIDTH=1 , + SHAPE(6)%IFILLSTYLE=2 , + SHAPE(6)%IUNITS=1 , + SHAPE(6)%IPLOTONPANEL=0 , + SHAPE(6)%XPOS= 0.50000000000000000 , + SHAPE(6)%YPOS= 0.50000000000000000 , + SHAPE(6)%XLEN= 1.0000000000000000 , + SHAPE(6)%YLEN= 1.0000000000000000 , + SHAPE(6)%ANGLE= 0.0000000000000000 , + SHAPE(6)%FJUST= 0.0000000000000000 , + SHAPE(6)%OPACITY= 1.0000000000000000 , + SHAPE(6)%TEXT=' ', + SHAPE(7)%ITYPE=0 , + SHAPE(7)%ICOLOUR=1 , + SHAPE(7)%LINESTYLE=1 , + SHAPE(7)%LINEWIDTH=1 , + SHAPE(7)%IFILLSTYLE=2 , + SHAPE(7)%IUNITS=1 , + SHAPE(7)%IPLOTONPANEL=0 , + SHAPE(7)%XPOS= 0.50000000000000000 , + SHAPE(7)%YPOS= 0.50000000000000000 , + SHAPE(7)%XLEN= 1.0000000000000000 , + SHAPE(7)%YLEN= 1.0000000000000000 , + SHAPE(7)%ANGLE= 0.0000000000000000 , + SHAPE(7)%FJUST= 0.0000000000000000 , + SHAPE(7)%OPACITY= 1.0000000000000000 , + SHAPE(7)%TEXT=' ', + SHAPE(8)%ITYPE=0 , + SHAPE(8)%ICOLOUR=1 , + SHAPE(8)%LINESTYLE=1 , + SHAPE(8)%LINEWIDTH=1 , + SHAPE(8)%IFILLSTYLE=2 , + SHAPE(8)%IUNITS=1 , + SHAPE(8)%IPLOTONPANEL=0 , + SHAPE(8)%XPOS= 0.50000000000000000 , + SHAPE(8)%YPOS= 0.50000000000000000 , + SHAPE(8)%XLEN= 1.0000000000000000 , + SHAPE(8)%YLEN= 1.0000000000000000 , + SHAPE(8)%ANGLE= 0.0000000000000000 , + SHAPE(8)%FJUST= 0.0000000000000000 , + SHAPE(8)%OPACITY= 1.0000000000000000 , + SHAPE(8)%TEXT=' ', + SHAPE(9)%ITYPE=0 , + SHAPE(9)%ICOLOUR=1 , + SHAPE(9)%LINESTYLE=1 , + SHAPE(9)%LINEWIDTH=1 , + SHAPE(9)%IFILLSTYLE=2 , + SHAPE(9)%IUNITS=1 , + SHAPE(9)%IPLOTONPANEL=0 , + SHAPE(9)%XPOS= 0.50000000000000000 , + SHAPE(9)%YPOS= 0.50000000000000000 , + SHAPE(9)%XLEN= 1.0000000000000000 , + SHAPE(9)%YLEN= 1.0000000000000000 , + SHAPE(9)%ANGLE= 0.0000000000000000 , + SHAPE(9)%FJUST= 0.0000000000000000 , + SHAPE(9)%OPACITY= 1.0000000000000000 , + SHAPE(9)%TEXT=' ', + SHAPE(10)%ITYPE=0 , + SHAPE(10)%ICOLOUR=1 , + SHAPE(10)%LINESTYLE=1 , + SHAPE(10)%LINEWIDTH=1 , + SHAPE(10)%IFILLSTYLE=2 , + SHAPE(10)%IUNITS=1 , + SHAPE(10)%IPLOTONPANEL=0 , + SHAPE(10)%XPOS= 0.50000000000000000 , + SHAPE(10)%YPOS= 0.50000000000000000 , + SHAPE(10)%XLEN= 1.0000000000000000 , + SHAPE(10)%YLEN= 1.0000000000000000 , + SHAPE(10)%ANGLE= 0.0000000000000000 , + SHAPE(10)%FJUST= 0.0000000000000000 , + SHAPE(10)%OPACITY= 1.0000000000000000 , + SHAPE(10)%TEXT=' ', + SHAPE(11)%ITYPE=0 , + SHAPE(11)%ICOLOUR=1 , + SHAPE(11)%LINESTYLE=1 , + SHAPE(11)%LINEWIDTH=1 , + SHAPE(11)%IFILLSTYLE=2 , + SHAPE(11)%IUNITS=1 , + SHAPE(11)%IPLOTONPANEL=0 , + SHAPE(11)%XPOS= 0.50000000000000000 , + SHAPE(11)%YPOS= 0.50000000000000000 , + SHAPE(11)%XLEN= 1.0000000000000000 , + SHAPE(11)%YLEN= 1.0000000000000000 , + SHAPE(11)%ANGLE= 0.0000000000000000 , + SHAPE(11)%FJUST= 0.0000000000000000 , + SHAPE(11)%OPACITY= 1.0000000000000000 , + SHAPE(11)%TEXT=' ', + SHAPE(12)%ITYPE=0 , + SHAPE(12)%ICOLOUR=1 , + SHAPE(12)%LINESTYLE=1 , + SHAPE(12)%LINEWIDTH=1 , + SHAPE(12)%IFILLSTYLE=2 , + SHAPE(12)%IUNITS=1 , + SHAPE(12)%IPLOTONPANEL=0 , + SHAPE(12)%XPOS= 0.50000000000000000 , + SHAPE(12)%YPOS= 0.50000000000000000 , + SHAPE(12)%XLEN= 1.0000000000000000 , + SHAPE(12)%YLEN= 1.0000000000000000 , + SHAPE(12)%ANGLE= 0.0000000000000000 , + SHAPE(12)%FJUST= 0.0000000000000000 , + SHAPE(12)%OPACITY= 1.0000000000000000 , + SHAPE(12)%TEXT=' ', + SHAPE(13)%ITYPE=0 , + SHAPE(13)%ICOLOUR=1 , + SHAPE(13)%LINESTYLE=1 , + SHAPE(13)%LINEWIDTH=1 , + SHAPE(13)%IFILLSTYLE=2 , + SHAPE(13)%IUNITS=1 , + SHAPE(13)%IPLOTONPANEL=0 , + SHAPE(13)%XPOS= 0.50000000000000000 , + SHAPE(13)%YPOS= 0.50000000000000000 , + SHAPE(13)%XLEN= 1.0000000000000000 , + SHAPE(13)%YLEN= 1.0000000000000000 , + SHAPE(13)%ANGLE= 0.0000000000000000 , + SHAPE(13)%FJUST= 0.0000000000000000 , + SHAPE(13)%OPACITY= 1.0000000000000000 , + SHAPE(13)%TEXT=' ', + SHAPE(14)%ITYPE=0 , + SHAPE(14)%ICOLOUR=1 , + SHAPE(14)%LINESTYLE=1 , + SHAPE(14)%LINEWIDTH=1 , + SHAPE(14)%IFILLSTYLE=2 , + SHAPE(14)%IUNITS=1 , + SHAPE(14)%IPLOTONPANEL=0 , + SHAPE(14)%XPOS= 0.50000000000000000 , + SHAPE(14)%YPOS= 0.50000000000000000 , + SHAPE(14)%XLEN= 1.0000000000000000 , + SHAPE(14)%YLEN= 1.0000000000000000 , + SHAPE(14)%ANGLE= 0.0000000000000000 , + SHAPE(14)%FJUST= 0.0000000000000000 , + SHAPE(14)%OPACITY= 1.0000000000000000 , + SHAPE(14)%TEXT=' ', + SHAPE(15)%ITYPE=0 , + SHAPE(15)%ICOLOUR=1 , + SHAPE(15)%LINESTYLE=1 , + SHAPE(15)%LINEWIDTH=1 , + SHAPE(15)%IFILLSTYLE=2 , + SHAPE(15)%IUNITS=1 , + SHAPE(15)%IPLOTONPANEL=0 , + SHAPE(15)%XPOS= 0.50000000000000000 , + SHAPE(15)%YPOS= 0.50000000000000000 , + SHAPE(15)%XLEN= 1.0000000000000000 , + SHAPE(15)%YLEN= 1.0000000000000000 , + SHAPE(15)%ANGLE= 0.0000000000000000 , + SHAPE(15)%FJUST= 0.0000000000000000 , + SHAPE(15)%OPACITY= 1.0000000000000000 , + SHAPE(15)%TEXT=' ', + SHAPE(16)%ITYPE=0 , + SHAPE(16)%ICOLOUR=1 , + SHAPE(16)%LINESTYLE=1 , + SHAPE(16)%LINEWIDTH=1 , + SHAPE(16)%IFILLSTYLE=2 , + SHAPE(16)%IUNITS=1 , + SHAPE(16)%IPLOTONPANEL=0 , + SHAPE(16)%XPOS= 0.50000000000000000 , + SHAPE(16)%YPOS= 0.50000000000000000 , + SHAPE(16)%XLEN= 1.0000000000000000 , + SHAPE(16)%YLEN= 1.0000000000000000 , + SHAPE(16)%ANGLE= 0.0000000000000000 , + SHAPE(16)%FJUST= 0.0000000000000000 , + SHAPE(16)%OPACITY= 1.0000000000000000 , + SHAPE(16)%TEXT=' ', + SHAPE(17)%ITYPE=0 , + SHAPE(17)%ICOLOUR=1 , + SHAPE(17)%LINESTYLE=1 , + SHAPE(17)%LINEWIDTH=1 , + SHAPE(17)%IFILLSTYLE=2 , + SHAPE(17)%IUNITS=1 , + SHAPE(17)%IPLOTONPANEL=0 , + SHAPE(17)%XPOS= 0.50000000000000000 , + SHAPE(17)%YPOS= 0.50000000000000000 , + SHAPE(17)%XLEN= 1.0000000000000000 , + SHAPE(17)%YLEN= 1.0000000000000000 , + SHAPE(17)%ANGLE= 0.0000000000000000 , + SHAPE(17)%FJUST= 0.0000000000000000 , + SHAPE(17)%OPACITY= 1.0000000000000000 , + SHAPE(17)%TEXT=' ', + SHAPE(18)%ITYPE=0 , + SHAPE(18)%ICOLOUR=1 , + SHAPE(18)%LINESTYLE=1 , + SHAPE(18)%LINEWIDTH=1 , + SHAPE(18)%IFILLSTYLE=2 , + SHAPE(18)%IUNITS=1 , + SHAPE(18)%IPLOTONPANEL=0 , + SHAPE(18)%XPOS= 0.50000000000000000 , + SHAPE(18)%YPOS= 0.50000000000000000 , + SHAPE(18)%XLEN= 1.0000000000000000 , + SHAPE(18)%YLEN= 1.0000000000000000 , + SHAPE(18)%ANGLE= 0.0000000000000000 , + SHAPE(18)%FJUST= 0.0000000000000000 , + SHAPE(18)%OPACITY= 1.0000000000000000 , + SHAPE(18)%TEXT=' ', + SHAPE(19)%ITYPE=0 , + SHAPE(19)%ICOLOUR=1 , + SHAPE(19)%LINESTYLE=1 , + SHAPE(19)%LINEWIDTH=1 , + SHAPE(19)%IFILLSTYLE=2 , + SHAPE(19)%IUNITS=1 , + SHAPE(19)%IPLOTONPANEL=0 , + SHAPE(19)%XPOS= 0.50000000000000000 , + SHAPE(19)%YPOS= 0.50000000000000000 , + SHAPE(19)%XLEN= 1.0000000000000000 , + SHAPE(19)%YLEN= 1.0000000000000000 , + SHAPE(19)%ANGLE= 0.0000000000000000 , + SHAPE(19)%FJUST= 0.0000000000000000 , + SHAPE(19)%OPACITY= 1.0000000000000000 , + SHAPE(19)%TEXT=' ', + SHAPE(20)%ITYPE=0 , + SHAPE(20)%ICOLOUR=1 , + SHAPE(20)%LINESTYLE=1 , + SHAPE(20)%LINEWIDTH=1 , + SHAPE(20)%IFILLSTYLE=2 , + SHAPE(20)%IUNITS=1 , + SHAPE(20)%IPLOTONPANEL=0 , + SHAPE(20)%XPOS= 0.50000000000000000 , + SHAPE(20)%YPOS= 0.50000000000000000 , + SHAPE(20)%XLEN= 1.0000000000000000 , + SHAPE(20)%YLEN= 1.0000000000000000 , + SHAPE(20)%ANGLE= 0.0000000000000000 , + SHAPE(20)%FJUST= 0.0000000000000000 , + SHAPE(20)%OPACITY= 1.0000000000000000 , + SHAPE(20)%TEXT=' ', + SHAPE(21)%ITYPE=0 , + SHAPE(21)%ICOLOUR=1 , + SHAPE(21)%LINESTYLE=1 , + SHAPE(21)%LINEWIDTH=1 , + SHAPE(21)%IFILLSTYLE=2 , + SHAPE(21)%IUNITS=1 , + SHAPE(21)%IPLOTONPANEL=0 , + SHAPE(21)%XPOS= 0.50000000000000000 , + SHAPE(21)%YPOS= 0.50000000000000000 , + SHAPE(21)%XLEN= 1.0000000000000000 , + SHAPE(21)%YLEN= 1.0000000000000000 , + SHAPE(21)%ANGLE= 0.0000000000000000 , + SHAPE(21)%FJUST= 0.0000000000000000 , + SHAPE(21)%OPACITY= 1.0000000000000000 , + SHAPE(21)%TEXT=' ', + SHAPE(22)%ITYPE=0 , + SHAPE(22)%ICOLOUR=1 , + SHAPE(22)%LINESTYLE=1 , + SHAPE(22)%LINEWIDTH=1 , + SHAPE(22)%IFILLSTYLE=2 , + SHAPE(22)%IUNITS=1 , + SHAPE(22)%IPLOTONPANEL=0 , + SHAPE(22)%XPOS= 0.50000000000000000 , + SHAPE(22)%YPOS= 0.50000000000000000 , + SHAPE(22)%XLEN= 1.0000000000000000 , + SHAPE(22)%YLEN= 1.0000000000000000 , + SHAPE(22)%ANGLE= 0.0000000000000000 , + SHAPE(22)%FJUST= 0.0000000000000000 , + SHAPE(22)%OPACITY= 1.0000000000000000 , + SHAPE(22)%TEXT=' ', + SHAPE(23)%ITYPE=0 , + SHAPE(23)%ICOLOUR=1 , + SHAPE(23)%LINESTYLE=1 , + SHAPE(23)%LINEWIDTH=1 , + SHAPE(23)%IFILLSTYLE=2 , + SHAPE(23)%IUNITS=1 , + SHAPE(23)%IPLOTONPANEL=0 , + SHAPE(23)%XPOS= 0.50000000000000000 , + SHAPE(23)%YPOS= 0.50000000000000000 , + SHAPE(23)%XLEN= 1.0000000000000000 , + SHAPE(23)%YLEN= 1.0000000000000000 , + SHAPE(23)%ANGLE= 0.0000000000000000 , + SHAPE(23)%FJUST= 0.0000000000000000 , + SHAPE(23)%OPACITY= 1.0000000000000000 , + SHAPE(23)%TEXT=' ', + SHAPE(24)%ITYPE=0 , + SHAPE(24)%ICOLOUR=1 , + SHAPE(24)%LINESTYLE=1 , + SHAPE(24)%LINEWIDTH=1 , + SHAPE(24)%IFILLSTYLE=2 , + SHAPE(24)%IUNITS=1 , + SHAPE(24)%IPLOTONPANEL=0 , + SHAPE(24)%XPOS= 0.50000000000000000 , + SHAPE(24)%YPOS= 0.50000000000000000 , + SHAPE(24)%XLEN= 1.0000000000000000 , + SHAPE(24)%YLEN= 1.0000000000000000 , + SHAPE(24)%ANGLE= 0.0000000000000000 , + SHAPE(24)%FJUST= 0.0000000000000000 , + SHAPE(24)%OPACITY= 1.0000000000000000 , + SHAPE(24)%TEXT=' ', + SHAPE(25)%ITYPE=0 , + SHAPE(25)%ICOLOUR=1 , + SHAPE(25)%LINESTYLE=1 , + SHAPE(25)%LINEWIDTH=1 , + SHAPE(25)%IFILLSTYLE=2 , + SHAPE(25)%IUNITS=1 , + SHAPE(25)%IPLOTONPANEL=0 , + SHAPE(25)%XPOS= 0.50000000000000000 , + SHAPE(25)%YPOS= 0.50000000000000000 , + SHAPE(25)%XLEN= 1.0000000000000000 , + SHAPE(25)%YLEN= 1.0000000000000000 , + SHAPE(25)%ANGLE= 0.0000000000000000 , + SHAPE(25)%FJUST= 0.0000000000000000 , + SHAPE(25)%OPACITY= 1.0000000000000000 , + SHAPE(25)%TEXT=' ', + SHAPE(26)%ITYPE=0 , + SHAPE(26)%ICOLOUR=1 , + SHAPE(26)%LINESTYLE=1 , + SHAPE(26)%LINEWIDTH=1 , + SHAPE(26)%IFILLSTYLE=2 , + SHAPE(26)%IUNITS=1 , + SHAPE(26)%IPLOTONPANEL=0 , + SHAPE(26)%XPOS= 0.50000000000000000 , + SHAPE(26)%YPOS= 0.50000000000000000 , + SHAPE(26)%XLEN= 1.0000000000000000 , + SHAPE(26)%YLEN= 1.0000000000000000 , + SHAPE(26)%ANGLE= 0.0000000000000000 , + SHAPE(26)%FJUST= 0.0000000000000000 , + SHAPE(26)%OPACITY= 1.0000000000000000 , + SHAPE(26)%TEXT=' ', + SHAPE(27)%ITYPE=0 , + SHAPE(27)%ICOLOUR=1 , + SHAPE(27)%LINESTYLE=1 , + SHAPE(27)%LINEWIDTH=1 , + SHAPE(27)%IFILLSTYLE=2 , + SHAPE(27)%IUNITS=1 , + SHAPE(27)%IPLOTONPANEL=0 , + SHAPE(27)%XPOS= 0.50000000000000000 , + SHAPE(27)%YPOS= 0.50000000000000000 , + SHAPE(27)%XLEN= 1.0000000000000000 , + SHAPE(27)%YLEN= 1.0000000000000000 , + SHAPE(27)%ANGLE= 0.0000000000000000 , + SHAPE(27)%FJUST= 0.0000000000000000 , + SHAPE(27)%OPACITY= 1.0000000000000000 , + SHAPE(27)%TEXT=' ', + SHAPE(28)%ITYPE=0 , + SHAPE(28)%ICOLOUR=1 , + SHAPE(28)%LINESTYLE=1 , + SHAPE(28)%LINEWIDTH=1 , + SHAPE(28)%IFILLSTYLE=2 , + SHAPE(28)%IUNITS=1 , + SHAPE(28)%IPLOTONPANEL=0 , + SHAPE(28)%XPOS= 0.50000000000000000 , + SHAPE(28)%YPOS= 0.50000000000000000 , + SHAPE(28)%XLEN= 1.0000000000000000 , + SHAPE(28)%YLEN= 1.0000000000000000 , + SHAPE(28)%ANGLE= 0.0000000000000000 , + SHAPE(28)%FJUST= 0.0000000000000000 , + SHAPE(28)%OPACITY= 1.0000000000000000 , + SHAPE(28)%TEXT=' ', + SHAPE(29)%ITYPE=0 , + SHAPE(29)%ICOLOUR=1 , + SHAPE(29)%LINESTYLE=1 , + SHAPE(29)%LINEWIDTH=1 , + SHAPE(29)%IFILLSTYLE=2 , + SHAPE(29)%IUNITS=1 , + SHAPE(29)%IPLOTONPANEL=0 , + SHAPE(29)%XPOS= 0.50000000000000000 , + SHAPE(29)%YPOS= 0.50000000000000000 , + SHAPE(29)%XLEN= 1.0000000000000000 , + SHAPE(29)%YLEN= 1.0000000000000000 , + SHAPE(29)%ANGLE= 0.0000000000000000 , + SHAPE(29)%FJUST= 0.0000000000000000 , + SHAPE(29)%OPACITY= 1.0000000000000000 , + SHAPE(29)%TEXT=' ', + SHAPE(30)%ITYPE=0 , + SHAPE(30)%ICOLOUR=1 , + SHAPE(30)%LINESTYLE=1 , + SHAPE(30)%LINEWIDTH=1 , + SHAPE(30)%IFILLSTYLE=2 , + SHAPE(30)%IUNITS=1 , + SHAPE(30)%IPLOTONPANEL=0 , + SHAPE(30)%XPOS= 0.50000000000000000 , + SHAPE(30)%YPOS= 0.50000000000000000 , + SHAPE(30)%XLEN= 1.0000000000000000 , + SHAPE(30)%YLEN= 1.0000000000000000 , + SHAPE(30)%ANGLE= 0.0000000000000000 , + SHAPE(30)%FJUST= 0.0000000000000000 , + SHAPE(30)%OPACITY= 1.0000000000000000 , + SHAPE(30)%TEXT=' ', + SHAPE(31)%ITYPE=0 , + SHAPE(31)%ICOLOUR=1 , + SHAPE(31)%LINESTYLE=1 , + SHAPE(31)%LINEWIDTH=1 , + SHAPE(31)%IFILLSTYLE=2 , + SHAPE(31)%IUNITS=1 , + SHAPE(31)%IPLOTONPANEL=0 , + SHAPE(31)%XPOS= 0.50000000000000000 , + SHAPE(31)%YPOS= 0.50000000000000000 , + SHAPE(31)%XLEN= 1.0000000000000000 , + SHAPE(31)%YLEN= 1.0000000000000000 , + SHAPE(31)%ANGLE= 0.0000000000000000 , + SHAPE(31)%FJUST= 0.0000000000000000 , + SHAPE(31)%OPACITY= 1.0000000000000000 , + SHAPE(31)%TEXT=' ', + SHAPE(32)%ITYPE=0 , + SHAPE(32)%ICOLOUR=1 , + SHAPE(32)%LINESTYLE=1 , + SHAPE(32)%LINEWIDTH=1 , + SHAPE(32)%IFILLSTYLE=2 , + SHAPE(32)%IUNITS=1 , + SHAPE(32)%IPLOTONPANEL=0 , + SHAPE(32)%XPOS= 0.50000000000000000 , + SHAPE(32)%YPOS= 0.50000000000000000 , + SHAPE(32)%XLEN= 1.0000000000000000 , + SHAPE(32)%YLEN= 1.0000000000000000 , + SHAPE(32)%ANGLE= 0.0000000000000000 , + SHAPE(32)%FJUST= 0.0000000000000000 , + SHAPE(32)%OPACITY= 1.0000000000000000 , + SHAPE(32)%TEXT=' ', + / +&CALCOPTS + CALCSTRING= 35*' ', + CALCLABEL= 35*' ', + CALCUNITSLABEL= 35*' ', + / +&ANIMOPTS + NSEQ=0 , + NFRAMES=0 , + ISEQSTART= 6*0 , + ISEQEND= 6*0 , + ISEQTYPE= 6*0 , + XMINSEQEND= 0.0000000000000000 , + XMAXSEQEND= 0.0000000000000000 , + YMINSEQEND= 0.0000000000000000 , + YMAXSEQEND= 0.0000000000000000 , + ANGLEZEND= 360.00000000000000 , + ANGLEYEND= 0.0000000000000000 , + ANGLEXEND= 0.0000000000000000 , + ZOBSERVEREND= 0.0000000000000000 , + TAUPARTDEPTHEND= 2000.0000000000000 , + ICOLCHANGE=0 , + XMINCOLEND= 0.0000000000000000 , + XMAXCOLEND= 0.0000000000000000 , + XSECPOS_NOMULTI_END= 0.0000000000000000 , + / +2i_00000 diff --git a/data/config_files/render_testing.limits b/data/config_files/render_testing.limits new file mode 100644 index 00000000..d21aeda6 --- /dev/null +++ b/data/config_files/render_testing.limits @@ -0,0 +1,14 @@ + -4.288563E+02 4.068461E+02 + -2.816943E+02 2.827843E+02 + -2.864435E+02 2.827554E+02 + 8.325490E-07 6.000302E-01 + 2.700926E-01 2.825931E+01 + 3.253349E+04 3.253349E+08 + -1.054270E+00 1.258852E+00 + -8.572277E+00 2.091594E+01 + -1.400829E+00 2.515430E+00 + 2.476534E+10 2.476534E+14 + 0.000000E+00 0.000000E+00 + 0.000000E+00 5.949205E-01 + -1.852214E-06 1.898078E-06 + -2.984610E+40 0.000000E+00 diff --git a/data/config_files/render_testing.units b/data/config_files/render_testing.units new file mode 100644 index 00000000..b563322a --- /dev/null +++ b/data/config_files/render_testing.units @@ -0,0 +1,15 @@ + 0.44269732330565637 ; hrs ; 69595000000.000000 ; [cm] + 0.99992816091954018 ; [R_{Sun}] + 0.99992816091954018 ; [R_{Sun}] + 0.99992816091954018 ; [R_{Sun}] + 1.0000502765208648 ; [M_{Sun}] + 0.99992816091954018 ; [R_{Sun}] + 5.9009576780619177 ; [g/cm^3] + 436.68537004225072 ; [km/s] + 436.68537004225072 ; [km/s] + 436.68537004225072 ; [km/s] + 1906941124089374.8 ; [erg/g] + 1.0000000000000000 ; + 1.0000000000000000 ; + 6.2746658530390216E-004 ; [1/s] + 3.7930965899261752E+048 ; [erg] diff --git a/data/control_images/bad_plot.png b/data/control_images/bad_plot.png new file mode 100644 index 00000000..f1f49cc0 Binary files /dev/null and b/data/control_images/bad_plot.png differ diff --git a/data/control_images/log_rho_render.png b/data/control_images/log_rho_render.png new file mode 100644 index 00000000..1d934cff Binary files /dev/null and b/data/control_images/log_rho_render.png differ diff --git a/data/control_images/log_rho_sink0_render.png b/data/control_images/log_rho_sink0_render.png new file mode 100644 index 00000000..1d934cff Binary files /dev/null and b/data/control_images/log_rho_sink0_render.png differ diff --git a/data/control_images/log_rho_sink1_render.png b/data/control_images/log_rho_sink1_render.png new file mode 100644 index 00000000..a7daeb7c Binary files /dev/null and b/data/control_images/log_rho_sink1_render.png differ diff --git a/data/control_images/log_rho_sink1_render_splash4_19march.png b/data/control_images/log_rho_sink1_render_splash4_19march.png new file mode 100644 index 00000000..784e1251 Binary files /dev/null and b/data/control_images/log_rho_sink1_render_splash4_19march.png differ diff --git a/data/control_images/log_rho_sink1_render_splash4_312.png b/data/control_images/log_rho_sink1_render_splash4_312.png new file mode 100644 index 00000000..a7daeb7c Binary files /dev/null and b/data/control_images/log_rho_sink1_render_splash4_312.png differ diff --git a/data/control_images/log_rho_sink2_render.png b/data/control_images/log_rho_sink2_render.png new file mode 100644 index 00000000..af0873b9 Binary files /dev/null and b/data/control_images/log_rho_sink2_render.png differ diff --git a/data/control_images/log_rho_v_render.png b/data/control_images/log_rho_v_render.png new file mode 100644 index 00000000..be879440 Binary files /dev/null and b/data/control_images/log_rho_v_render.png differ diff --git a/data/control_images/log_u_render.png b/data/control_images/log_u_render.png new file mode 100644 index 00000000..04c53c3e Binary files /dev/null and b/data/control_images/log_u_render.png differ diff --git a/scripts/Dockerfile b/scripts/Dockerfile new file mode 100644 index 00000000..c9d42b1d --- /dev/null +++ b/scripts/Dockerfile @@ -0,0 +1,29 @@ +FROM debian:12.11 + +RUN apt-get update && apt-get install -y \ + python3 \ + python3-pip \ + gfortran \ + git \ + make \ + cmake \ + libpng-dev \ + libx11-dev \ + libcairo2-dev \ + pkg-config \ + vim \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /opt/splash +RUN git clone https://github.com/danieljprice/splash.git . && \ + git clone https://github.com/danieljprice/giza.git giza && \ + git checkout v3.12.0 && \ + make SYSTEM=gfortran withgiza + +ENV PATH="/opt/splash/bin:$PATH" +ENV LD_LIBRARY_PATH="/opt/splash/giza/lib:$LD_LIBRARY_PATH" + +RUN pip install pillow "imagehash>=4.3.2" "numpy<2.0" \ + --break-system-packages + +WORKDIR /workspace \ No newline at end of file diff --git a/scripts/generate_renders_testing.py b/scripts/generate_renders_testing.py new file mode 100644 index 00000000..cef76268 --- /dev/null +++ b/scripts/generate_renders_testing.py @@ -0,0 +1,13 @@ +import subprocess + +RENDERS = [ + ["splash", "2i_00000", "-r", "6", "-p", "render_testing", "-dev", "log_rho_render.png" ], + ["splash", "2i_00000", "-r", "10", "-p", "render_testing", "-dev", "log_u_render.png" ], + ["splash", "2i_00000", "-r", "6", "-p", "render_testing", "-vec", "7", "-dev", "log_rho_v_render.png"], + ["splash", "2i_00000", "-r", "6", "-p", "render_testing", "--sink=0", "-dev", "log_rho_sink0_render.png"], + ["splash", "2i_00000", "-r", "6", "-p", "render_testing", "--sink=1", "-dev", "log_rho_sink1_render.png"], + ["splash", "2i_00000", "-r", "6", "-p", "render_testing", "--sink=2", "-dev", "log_rho_sink2_render.png"], +] + +for command in RENDERS: + subprocess.run(command, check=True) \ No newline at end of file diff --git a/tests/test_figure_hash.py b/tests/test_figure_hash.py new file mode 100644 index 00000000..76562efc --- /dev/null +++ b/tests/test_figure_hash.py @@ -0,0 +1,56 @@ +from PIL import Image +import imagehash +from pathlib import Path +import os +import pytest +from enum import IntEnum +import numpy as np + +class Threshold(IntEnum): + HIGH = 4 # Nearly identical, tight tolerance + MEDIUM = 7 # Minor platform differences expected + LOW = 10 # Moderate differences acceptable + RELAXED = 15 # Known sensitivity to platform/version differences + + +SPLASH_DIR = Path(os.environ.get("SPLASH_DIR", Path(__file__).resolve().parents[1])) +TARGET_DIR = Path("./") +CONTROL_DIR = SPLASH_DIR / "data/control_images" +BAD_PLOT = CONTROL_DIR / "bad_plot.png" + + + +def hamming(img1, img2): + h1 = imagehash.phash(img1).hash + h2 = imagehash.phash(img2).hash + return int(np.count_nonzero(h1 != h2)) + + +@pytest.fixture +def image_pair(): + def _load(image_name): + control = Image.open(CONTROL_DIR / image_name) + target = Image.open(TARGET_DIR / image_name) + return control, target + return _load + + +class TestImageHash: + + @pytest.mark.parametrize( + "image_name, threshold", + [ + ("log_rho_render.png", Threshold.LOW), + ("log_rho_sink0_render.png", Threshold.LOW), + ("log_rho_sink1_render.png", Threshold.RELAXED), + ("log_rho_sink2_render.png", Threshold.RELAXED), + ("log_rho_v_render.png", Threshold.LOW), + ("log_u_render.png", Threshold.LOW), + ] + ) + def test_renders(self, image_name, threshold, image_pair): + target_path = TARGET_DIR / image_name + assert target_path.exists() + control, target = image_pair(image_name) + assert hamming(control, target) <= threshold + assert hamming(Image.open(BAD_PLOT), target) > Threshold.LOW \ No newline at end of file