How to visualize a sky vector?

In several places I see nice false color luminance representations of Perez skies.

  Trying to render or preferably plot such a representation from a sky vector appears not to be so easy.

  I looked at Andy's McNeil_BSDFsandPhases.pdf and see that using an adaptation of
     vwrays -ff -vf views/back.vf -x 600 -y 600 \

          > rfluxmtx `vwrays -vf views/back.vf -x 600 -y 600 -d` \

  -ffc -ab 12 -ad 50000 -lw 2e-5 \

  - skies/sky.rad \

          materials/testroom.mat objects/testroom.rad
  followed by an adaptation of
    dctimestep dcx/g_%03d.hdr skies/12_21_15.skv \

  > images/122115_clear_dcx.hdr
  could do the trick. For a MF:4 sky I'll be generating 2305 images. Generating these and combining them takes quite long and a lot of disk IO.

  (I did not bother to use a ram disk). Somehow this approach appears to be a bit of a detour.

  Before proceeding on this path: Isn't there a simpler way?

  Basically it should be possible to just plot the sky vector values using something like gnuplot. 

  Best regards,

  Wouter

Hello Wouter,

I remember doing this quite a while ago. My approach was to create a sky
with the actual patch values and render just one image. To do this I:

   1. Generate the sky vector values using... using -h for removing the
   header might be useful.
      - gensky XXXXXXX | genskyvec -h | rcalc -e '$1 =
      $1*0.265+$2*0.67+$3*0.065
      - This will lead to one a vector of one value per sky patch.
   2. modified the reinhartb.cal file to create a mod_reinhartb.cal (see
   below). Be aware of modifying the MF parameter according to your needs.
   3. Paste the vector generated on Step 1 in the mod_reinhartb.cal
   4. Write the sky.rad file.
   5. oconv sky.rad > octree.oct
   6. rpict -vth -vd 0 0 1 -vu 0 1 0 -vh 180 -vv 180 -vp 0 0 0 -ab 3
   octree.oct > sky.hdr

You can also plot the values generated on step 1

Hope this help

Germán

#sky.rad

void brightfunc skyfunc
2 rad ./mod_reinhartb.cal
0
0

skyfunc glow skyglow
0
0
4 1 1 1 0

skyglow source sky
0
0
4 0 0 1 180

···

######################################
######################

### mod_reinhartb.cal
{ RCSid $Id: reinhartb.cal,v 2.6 2015/03/27 18:58:06 greg Exp $ }
{
Compute Reinhart high-density sky patch bin (rbin)

MF - Subdivision value (usually a power of two)
Dx,Dy,Dz - Incident direction (normalized, towards surface face)
rNx,rNy,rNz - Surface normal (normalized, away from surface)
Ux,Uy,Uz - Up direction vector (does not need to be normalized)

Modified from reinhart.cal

July 2014 G. Ward
}
{ Useful factors and functions }
DEGREE : PI/180;
Asin(x) : if(x-1, PI/2, if(-1-x, -PI/2, asin(x))) / DEGREE;
posangle(a) : if(-a, a + 2*PI, a) / DEGREE;
Atan2(y,x) : posangle(atan2(y,x));

{ Default to Tregenza sky }
MF = 1;
{ Set to -1 for left-handed coordinate system }
RHS = 1;
{ Default axis orientation (+Y == north) }
rNx = 0; rNy = 0; rNz = -1;
Ux = 0; Uy = 1; Uz = 0;
{ Compute oriented axis angles }
inc_dz = -Dx*rNx-Dy*rNy-Dz*rNz;
inc_rx = -RHS*(Dx*(Uy*rNz-Uz*rNy) + Dy*(Uz*rNx-Ux*rNz) +
Dz*(Ux*rNy-Uy*rNx));
inc_ry = Dx*Ux+Dy*Uy+Dz*Uz + inc_dz*(rNx*Ux+rNy*Uy+rNz*Uz);

r_alt = Asin(inc_dz);
r_azi = Atan2(inc_rx,inc_ry);

alpha = 90/(MF*7 + .5); { Separation between rows in degrees }
{ Number of patches per row }
tnaz(r) : select(r, 30, 30, 24, 24, 18, 12, 6);
rnaz(r) = if(r-(7*MF-.5), 1, MF*tnaz(floor((r+.5)/MF) + 1));

raccum(r) = if(r-.5, rnaz(r-1) + raccum(r-1), 0);

r_row = floor(r_alt/alpha);

r_inc = 360/rnaz(r_row);

r_azn = if(359.9999-.5*r_inc - r_azi, floor((r_azi +.5*r_inc)/r_inc), 0);

{ Final bin value, -1 for "ground" }
rbin = if (r_alt, raccum(r_row) + r_azn, -1);

Nrbins = raccum(7*MF+1); { total number of bins }

rad = select(rbin,
0.8778734094,
        0.3797278557,
        ..... one value per patch.
        ..... Paste the vector generated on step 1 here
);

2015-12-04 11:31 GMT-03:00 ascendilex | Wouter Beck < wouter.beck@ascendilex.nl>:

In several places I see nice false color luminance representations of
Perez skies.
Trying to render or preferably plot such a representation from a sky
vector appears not to be so easy.

I looked at Andy's McNeil_BSDFsandPhases.pdf and see that using an
adaptation of

vwrays -ff -vf views/back.vf -x 600 -y 600 \
> rfluxmtx `vwrays -vf views/back.vf -x 600 -y 600 -d` \
-ffc -ab 12 -ad 50000 -lw 2e-5 \
- skies/sky.rad \
materials/testroom.mat objects/testroom.rad

followed by an adaptation of

dctimestep dcx/g_%03d.hdr skies/12_21_15.skv \
> images/122115_clear_dcx.hdr

could do the trick. For a MF:4 sky I'll be generating 2305 images.
Generating these and combining them takes quite long and a lot of disk IO.
(I did not bother to use a ram disk). Somehow this approach appears to be
a bit of a detour.

Before proceeding on this path: Isn't there a simpler way?

Basically it should be possible to just plot the sky vector values using
something like gnuplot.

Best regards,
Wouter

_______________________________________________
Radiance-general mailing list
Radiance-general@radiance-online.org
http://www.radiance-online.org/mailman/listinfo/radiance-general

Hi Wouter,

Germán's idea is very clever, but may be more difficult to automate. You can stick with Andy's original method, yet reduce the file i/o by converting the uncompressed Radiance images produced by rfluxmtx into compressed ones that take much less space. You just need to run "ra_rgbe -r orig_image.hdr smaller_image.hdr" on each image in your dcx/ directory.

-Greg

···

From: Germán Molina Larrain <germolinal@gmail.com>
Subject: Re: [Radiance-general] How to visualize a sky vector?
Date: December 4, 2015 4:20:09 PM GMT+01:00

Hello Wouter,

I remember doing this quite a while ago. My approach was to create a sky with the actual patch values and render just one image. To do this I:

Generate the sky vector values using... using -h for removing the header might be useful.
gensky XXXXXXX | genskyvec -h | rcalc -e '$1 = $1*0.265+$2*0.67+$3*0.065
This will lead to one a vector of one value per sky patch.
modified the reinhartb.cal file to create a mod_reinhartb.cal (see below). Be aware of modifying the MF parameter according to your needs.
Paste the vector generated on Step 1 in the mod_reinhartb.cal
Write the sky.rad file.
oconv sky.rad > octree.oct
rpict -vth -vd 0 0 1 -vu 0 1 0 -vh 180 -vv 180 -vp 0 0 0 -ab 3 octree.oct > sky.hdr
You can also plot the values generated on step 1

Hope this help

Germán

#sky.rad

void brightfunc skyfunc
2 rad ./mod_reinhartb.cal
0
0

skyfunc glow skyglow
0
0
4 1 1 1 0

skyglow source sky
0
0
4 0 0 1 180

######################################
######################

### mod_reinhartb.cal
{ RCSid $Id: reinhartb.cal,v 2.6 2015/03/27 18:58:06 greg Exp $ }
{
  Compute Reinhart high-density sky patch bin (rbin)

  MF - Subdivision value (usually a power of two)
  Dx,Dy,Dz - Incident direction (normalized, towards surface face)
  rNx,rNy,rNz - Surface normal (normalized, away from surface)
  Ux,Uy,Uz - Up direction vector (does not need to be normalized)

  Modified from reinhart.cal

  July 2014 G. Ward
}
        { Useful factors and functions }
DEGREE : PI/180;
Asin(x) : if(x-1, PI/2, if(-1-x, -PI/2, asin(x))) / DEGREE;
posangle(a) : if(-a, a + 2*PI, a) / DEGREE;
Atan2(y,x) : posangle(atan2(y,x));

        { Default to Tregenza sky }
MF = 1;
        { Set to -1 for left-handed coordinate system }
RHS = 1;
        { Default axis orientation (+Y == north) }
rNx = 0; rNy = 0; rNz = -1;
Ux = 0; Uy = 1; Uz = 0;
        { Compute oriented axis angles }
inc_dz = -Dx*rNx-Dy*rNy-Dz*rNz;
inc_rx = -RHS*(Dx*(Uy*rNz-Uz*rNy) + Dy*(Uz*rNx-Ux*rNz) + Dz*(Ux*rNy-Uy*rNx));
inc_ry = Dx*Ux+Dy*Uy+Dz*Uz + inc_dz*(rNx*Ux+rNy*Uy+rNz*Uz);

r_alt = Asin(inc_dz);
r_azi = Atan2(inc_rx,inc_ry);

alpha = 90/(MF*7 + .5); { Separation between rows in degrees }
        { Number of patches per row }
tnaz(r) : select(r, 30, 30, 24, 24, 18, 12, 6);
rnaz(r) = if(r-(7*MF-.5), 1, MF*tnaz(floor((r+.5)/MF) + 1));

raccum(r) = if(r-.5, rnaz(r-1) + raccum(r-1), 0);

r_row = floor(r_alt/alpha);

r_inc = 360/rnaz(r_row);

r_azn = if(359.9999-.5*r_inc - r_azi, floor((r_azi +.5*r_inc)/r_inc), 0);

        { Final bin value, -1 for "ground" }
rbin = if (r_alt, raccum(r_row) + r_azn, -1);

Nrbins = raccum(7*MF+1); { total number of bins }

rad = select(rbin,
  0.8778734094,
        0.3797278557,
        ..... one value per patch.
        ..... Paste the vector generated on step 1 here
);

2015-12-04 11:31 GMT-03:00 ascendilex | Wouter Beck <wouter.beck@ascendilex.nl>:
In several places I see nice false color luminance representations of Perez skies.
Trying to render or preferably plot such a representation from a sky vector appears not to be so easy.

I looked at Andy's McNeil_BSDFsandPhases.pdf and see that using an adaptation of

vwrays -ff -vf views/back.vf -x 600 -y 600 \
> rfluxmtx `vwrays -vf views/back.vf -x 600 -y 600 -d` \
-ffc -ab 12 -ad 50000 -lw 2e-5 \
- skies/sky.rad \
materials/testroom.mat objects/testroom.rad

followed by an adaptation of

dctimestep dcx/g_%03d.hdr skies/12_21_15.skv \
> images/122115_clear_dcx.hdr

could do the trick. For a MF:4 sky I'll be generating 2305 images. Generating these and combining them takes quite long and a lot of disk IO.
(I did not bother to use a ram disk). Somehow this approach appears to be a bit of a detour.

Before proceeding on this path: Isn't there a simpler way?

Basically it should be possible to just plot the sky vector values using something like gnuplot.

Best regards,
Wouter

Mind blown. Totally didn't realize (but should have) that rfluxmtx image output is not yet RLE. Mind blown! BOOM! Thanks for this gem, Greg!!

- Rob

···

On 12/4/15, 8:33 AM, "Greg Ward" <gregoryjward@gmail.com<mailto:gregoryjward@gmail.com>> wrote:

You can ... reduce the file i/o by converting the uncompressed Radiance images produced by rfluxmtx into compressed ones that take much less space. You just need to run "ra_rgbe -r orig_image.hdr smaller_image.hdr" on each image in your dcx/ directory.

-Greg

Yeah, and I think you can automate the conversion by outputting to a command from rcontrib:

  rcontrib -ffc -o '!ra_rgbe -r > rle_bin%04d.hdr' ...

This should also work for rfluxmtx on the command-line, but I just checked my code and the parameter parser doesn't accept quoted strings the way it should for specifying the output as part of a receiver file comment. I should look into fixing this!

-Greg

···

From: "Guglielmetti, Robert" <Robert.Guglielmetti@nrel.gov>
Subject: Re: [Radiance-general] How to visualize a sky vector?
Date: December 4, 2015 5:14:45 PM GMT+01:00

Mind blown. Totally didn't realize (but should have) that rfluxmtx image output is not yet RLE. Mind blown! BOOM! Thanks for this gem, Greg!!

- Rob

On 12/4/15, 8:33 AM, "Greg Ward" <gregoryjward@gmail.com<mailto:gregoryjward@gmail.com>> wrote:

You can ... reduce the file i/o by converting the uncompressed Radiance images produced by rfluxmtx into compressed ones that take much less space. You just need to run "ra_rgbe -r orig_image.hdr smaller_image.hdr" on each image in your dcx/ directory.

-Greg

Yeah, that would be sweet. One reason we don't offer images from the
daylight coefficients in OpenStudio is because of this disk space
concern...

···

On 12/4/15, 9:51 AM, "Greg Ward" <gregoryjward@gmail.com> wrote:

Yeah, and I think you can automate the conversion by outputting to a
command from rcontrib:

rcontrib -ffc -o '!ra_rgbe -r > rle_bin%04d.hdr' ...

This should also work for rfluxmtx on the command-line, but I just
checked my code and the parameter parser doesn't accept quoted strings
the way it should for specifying the output as part of a receiver file
comment. I should look into fixing this!

-Greg

From: "Guglielmetti, Robert" <Robert.Guglielmetti@nrel.gov>
Subject: Re: [Radiance-general] How to visualize a sky vector?
Date: December 4, 2015 5:14:45 PM GMT+01:00

Mind blown. Totally didn't realize (but should have) that rfluxmtx
image output is not yet RLE. Mind blown! BOOM! Thanks for this gem,
Greg!!

- Rob

On 12/4/15, 8:33 AM, "Greg Ward" >><gregoryjward@gmail.com<mailto:gregoryjward@gmail.com>> wrote:

You can ... reduce the file i/o by converting the uncompressed Radiance
images produced by rfluxmtx into compressed ones that take much less
space. You just need to run "ra_rgbe -r orig_image.hdr
smaller_image.hdr" on each image in your dcx/ directory.

-Greg

_______________________________________________
Radiance-general mailing list
Radiance-general@radiance-online.org
http://www.radiance-online.org/mailman/listinfo/radiance-general

Germ�n, Greg,

Thanks for your responses.

I made an attempt at automating Germ�n's approach.

Maybe it's useful to others as well.

Best regards,

Wouter
···

On 12/04/2015 04:33 PM, Greg Ward wrote:

Hi Wouter,

    Germ�n's idea is very clever, but may be more difficult to automate. �You can stick with Andy's original method, yet reduce the file i/o by converting the uncompressed Radiance images produced by rfluxmtx into compressed ones that take much less space. �You just need to run "ra_rgbe -r orig_image.hdr smaller_image.hdr" on each image in your dcx/ directory.

-Greg

From: Germ�n Molina Larrain germolinal@gmail.com

Subject: Re: [Radiance-general] How to visualize a sky vector?

Date: December 4, 2015 4:20:09 PM GMT+01:00

Hello Wouter,�

        I remember doing this quite a while ago. My approach was to create a sky with the actual patch values and render just one image. To do this I:
  1.             Generate the sky vector values using... using -h for removing the header might be useful.
    
  •                 gensky XXXXXXX | genskyvec -h | rcalc -e '$1 = $1*0.265+$2*0.67+$3*0.065
    
  •                 This will lead to one a vector of one value per sky patch.
    
  •             modified the reinhartb.cal file to create a mod_reinhartb.cal (see below). Be aware of modifying the MF parameter according to your needs.
    
  •             Paste the vector generated on Step 1 in the mod_reinhartb.cal
    
  • Write the sky.rad file.
  •               oconv�sky.rad >�octree.oct
    
  • rpict� -vth -vd 0 0 1 -vu 0 1 0 -vh 180 -vv 180 -vp 0 0 0 -ab 3 octree.oct > sky.hdr
    You can also plot the values generated on step 1

Hope this help

Germ�n

#sky.rad

              void brightfunc skyfunc
              2 rad ./mod_reinhartb.cal

0

0

              skyfunc glow skyglow�

0�

0�

4 1 1 1 0

skyglow source sky�

0�

0�

4 0 0 1 180

######################################

######################

mod_reinhartb.cal

              { RCSid $Id: reinhartb.cal,v 2.6 2015/03/27 18:58:06 greg Exp $ }

{

                Compute Reinhart high-density sky patch bin (rbin)
MF		                  - Subdivision value (usually a power of two)
Dx,Dy,Dz	                  - Incident direction (normalized, towards surface face)
rNx,rNy,rNz	                  - Surface normal (normalized, away from surface)
Ux,Uy,Uz	                  - Up direction vector (does not need to be normalized)
                Modified from reinhart.cal
                July 2014	                  G. Ward

}

  		                  { Useful factors and functions }

DEGREE : PI/180;

              Asin(x) : if(x-1, PI/2, if(-1-x, -PI/2, asin(x))) / DEGREE;
              posangle(a) : if(-a, a + 2*PI, a) / DEGREE;
              Atan2(y,x) : posangle(atan2(y,x));
  		                  { Default to Tregenza sky }

MF = 1;

  		                  { Set to -1 for left-handed coordinate system }

RHS = 1;

  		                  { Default axis orientation (+Y == north) }
              rNx = 0; rNy = 0; rNz = -1;
              Ux = 0; Uy = 1; Uz = 0;
  		                  { Compute oriented axis angles }
              inc_dz = -Dx*rNx-Dy*rNy-Dz*rNz;
              inc_rx = -RHS*(Dx*(Uy*rNz-Uz*rNy) + Dy*(Uz*rNx-Ux*rNz) + Dz*(Ux*rNy-Uy*rNx));
              inc_ry = Dx*Ux+Dy*Uy+Dz*Uz + inc_dz*(rNx*Ux+rNy*Uy+rNz*Uz);
              r_alt = Asin(inc_dz);
              r_azi = Atan2(inc_rx,inc_ry);
              alpha = 90/(MF*7 + .5);		                  { Separation between rows in degrees }
  		                  { Number of patches per row }
              tnaz(r) : select(r, 30, 30, 24, 24, 18, 12, 6);
              rnaz(r) = if(r-(7*MF-.5), 1, MF*tnaz(floor((r+.5)/MF) + 1));
              raccum(r) = if(r-.5, rnaz(r-1) + raccum(r-1), 0);
              r_row = floor(r_alt/alpha);
              r_inc = 360/rnaz(r_row);
              r_azn = if(359.9999-.5*r_inc - r_azi, floor((r_azi +.5*r_inc)/r_inc), 0);
  		                  { Final bin value, -1 for "ground" }
              rbin = if (r_alt, raccum(r_row) + r_azn, -1);
              Nrbins = raccum(7*MF+1);	                  { total number of bins }

rad = select(rbin,

0.8778734094,
              � � � � 0.3797278557,
              � � � � ..... one value per patch.
              � � � � ..... Paste the vector generated on step 1 here

);

        2015-12-04 11:31 GMT-03:00 ascendilex | Wouter Beck <wouter.beck@ascendilex.nl>:
              In several places I see nice false color luminance representations of Perez skies.

              Trying to render or preferably plot such a representation from a sky vector appears not to be so easy.



              I looked at Andy's McNeil_BSDFsandPhases.pdf and see that using an adaptation of
                �vwrays -ff -vf views/back.vf -x 600 -y 600 \

                                  | rfluxmtx `vwrays -vf views/back.vf -x 600 -y 600 -d` \

                                  -ffc -ab 12 -ad 50000 -lw 2e-5 \

              - skies/sky.rad \

                                  materials/testroom.mat objects/testroom.rad
              followed by an adaptation of
                dctimestep dcx/g_%03d.hdr skies/12_21_15.skv \

                                  > images/122115_clear_dcx.hdr
              could do the trick. For a MF:4 sky I'll be generating 2305 images. Generating these and combining them takes quite long and a lot of disk IO.

              (I did not bother to use a ram disk). Somehow this approach appears to be a bit of a detour.



              Before proceeding on this path: Isn't there a simpler way?



              Basically it should be possible to just plot the sky vector values using something like gnuplot.�



              Best regards,

              Wouter

Hey @German_Molina, thanks for sharing your beautiful solution for rendering sky patches. It is working for me almost perfectly, besides a strange error I am getting with the value of the first sky patch. First patch always gets assigned a value equal to the total number of patches, causing the value of every other patch to shift.

There must be an easy fix, but I have been unable to locate where to apply it after hours of searching! Maybe you or someone else has encountered this and would be able to suggest a solution

Please see images and the modified reinhartb.cal file below

Many thanks and best regards,
Paul

{ RCSid $Id$ }
{
Compute Reinhart high-density sky patch bin (rbin)

MF		- Subdivision value (usually a power of two)
Dx,Dy,Dz	- Incident direction (normalized, towards surface face)
rNx,rNy,rNz	- Surface normal (normalized, away from surface)
Ux,Uy,Uz	- Up direction vector (does not need to be normalized)

Modified from reinhart.cal

July 2014	G. Ward

}
{ Useful factors and functions }
DEGREE : PI/180;
Asin(x) : if(x-1, PI/2, if(-1-x, -PI/2, asin(x))) / DEGREE;
posangle(a) : if(-a, a + 2*PI, a) / DEGREE;
Atan2(y,x) : posangle(atan2(y,x));

			{ Default to Tregenza sky }

MF = 2;
{ Set to -1 for left-handed coordinate system }
RHS = 1;
{ Default axis orientation (+Y == north) }
rNx = 0; rNy = 0; rNz = -1;
Ux = 0; Uy = 1; Uz = 0;
{ Compute oriented axis angles }
inc_dz = -DxrNx-DyrNy-DzrNz;
inc_rx = -RHS
(Dx*(UyrNz-UzrNy) + Dy*(UzrNx-UxrNz) + Dz*(UxrNy-UyrNx));
inc_ry = DxUx+DyUy+DzUz + inc_dz(rNxUx+rNyUy+rNz*Uz);

r_alt = Asin(inc_dz);
r_azi = Atan2(inc_rx,inc_ry);

alpha = 90/(MF7 + .5); { Separation between rows in degrees }
{ Number of patches per row }
tnaz® : select(r, 30, 30, 24, 24, 18, 12, 6);
rnaz® = if(r-(7
MF-.5), 1, MF*tnaz(floor((r+.5)/MF) + 1));

raccum® = if(r-.5, rnaz(r-1) + raccum(r-1), 0);

r_row = floor(r_alt/alpha);

r_inc = 360/rnaz(r_row);

r_azn = if(359.9999-.5r_inc - r_azi, floor((r_azi +.5r_inc)/r_inc), 0);

			{ Final bin value, -1 for "ground" }

rbin = if (r_alt, raccum(r_row) + r_azn, -1);

Nrbins = raccum(7*MF+1); { total number of bins }

rad = select(rbin,
0.2149243374,
0.219195185146,
0.221219389933,
0.221549856261,
0.214335028262,
0.214277959565,
0.214920326937,
0.211147347096,
0.203819497183,
0.219559505687,
0.209441557805,
0.21700923405,
0.217338652548,
0.215421919799,
0.220720889605,
0.217934270919,
0.228889485358,
0.224153234919,
0.227720914126,
0.23586606637,
0.235939238978,
0.244236558715,
0.24644704914,
0.252940068658,
0.260448535077,
0.265246335289,
0.2697841045,
0.272737976912,
0.275579747118,
0.277111474708,
0.278375972983,
0.27716753218,
0.276063917248,
0.272904013569,
0.268352144459,
0.262835484027,
0.260747186399,
0.256982164715,
0.250580039229,
0.239169030305,
0.236189856694,
0.231234386198,
0.232169135157,
0.226658328329,
0.222022224444,
0.21853059567,
0.22587329225,
0.214943573689,
0.214610350899,
0.209957080293,
0.211970637788,
0.215299757368,
0.208420488008,
0.21818970452,
0.221026549712,
0.223301259248,
0.21733876222,
0.219937756946,
0.217289616565,
0.217613372179,
0.166229004479,
0.160449177924,
0.16027718659,
0.168336430887,
0.16747560547,
0.168074281337,
0.167678046483,
0.168834108001,
0.162101860406,
0.166602944278,
0.166306369885,
0.170143275991,
0.170416907364,
0.169405704269,
0.174980542559,
0.179679788519,
0.181391726285,
0.191554783187,
0.193967971369,
0.195002379317,
0.206036149819,
0.213526137937,
0.217448441861,
0.227971787354,
0.234092379627,
0.2419617977,
0.246897907089,
0.253128723435,
0.260095239188,
0.261590044254,
0.261790145614,
0.261865442705,
0.257639604928,
0.254766221127,
0.248143977604,
0.238223584163,
0.234556517011,
0.228500545657,
0.221295210391,
0.211425122382,
0.204034103654,
0.198382666033,
0.194553698135,
0.188165011994,
0.184384182047,
0.181126261088,
0.174674588656,
0.175472534457,
0.167884689242,
0.167070480621,
0.162530107463,
0.167147330624,
0.167514053454,
0.164308446155,
0.166141868967,
0.167492179116,
0.165566880017,
0.167942800724,
0.159853534913,
0.163534839135,
0.129271867376,
0.127410601435,
0.124757042365,
0.125659521622,
0.128239700587,
0.127521992233,
0.129841254014,
0.125029524333,
0.129934574484,
0.133760320281,
0.131275800291,
0.132493509479,
0.136329833447,
0.137646983201,
0.142929302315,
0.145413733907,
0.154006681552,
0.154696520795,
0.161618459967,
0.165761285189,
0.173795449921,
0.183970778885,
0.190041576345,
0.200816060265,
0.209162432975,
0.217349794185,
0.223953790422,
0.230092624925,
0.236564594159,
0.239040231926,
0.240472482061,
0.239773336548,
0.235706029513,
0.230657131371,
0.223382325306,
0.216357638956,
0.207100569042,
0.19911254196,
0.192210748956,
0.183802451636,
0.179018169388,
0.169247320432,
0.162413958455,
0.157026247127,
0.148555568723,
0.146768567877,
0.142558966768,
0.136607737535,
0.136198293733,
0.13430060329,
0.131726672196,
0.133173265515,
0.128537899676,
0.130013330123,
0.125962671302,
0.126036898923,
0.12612306344,
0.128000970563,
0.129340177923,
0.122876990619,
0.101389374334,
0.101437754099,
0.101340035324,
0.102666269024,
0.103612182409,
0.102616763071,
0.103690800676,
0.104870932225,
0.104978187529,
0.109028036637,
0.109278932724,
0.110676296969,
0.113258429689,
0.116976218231,
0.120270245331,
0.125107784104,
0.131176603461,
0.135452736927,
0.142461386139,
0.149011371123,
0.156753790175,
0.165399287838,
0.175111790487,
0.182781294384,
0.192926235477,
0.201747771375,
0.209816100204,
0.217062142584,
0.222383401126,
0.225976354537,
0.226659844155,
0.225643108305,
0.222001522835,
0.216924693774,
0.210548777876,
0.201897191967,
0.191737531907,
0.183734888129,
0.174273214904,
0.166145458295,
0.156569047498,
0.148593274089,
0.143436283495,
0.136316602915,
0.130495699992,
0.126170581021,
0.119722322601,
0.117755604871,
0.114901413922,
0.111808704439,
0.108889066481,
0.106437561217,
0.107001022837,
0.106497086183,
0.104754529336,
0.101867046501,
0.102301164474,
0.101619223547,
0.102053615292,
0.120867915662,
0.106440023339,
0.106644765131,
0.106520977871,
0.108545772982,
0.107679761469,
0.109477158129,
0.112934013876,
0.112556632383,
0.11694449726,
0.121357722902,
0.126630917673,
0.132491200101,
0.13897957149,
0.146440771018,
0.156762795027,
0.168248712336,
0.181368669966,
0.196168310686,
0.208360497632,
0.228171510062,
0.241370145959,
0.254696720238,
0.268201943864,
0.272986706837,
0.278503449484,
0.275320021658,
0.266374343409,
0.255205553217,
0.242371536639,
0.225939674109,
0.210819235255,
0.194959134438,
0.179590786402,
0.16711197435,
0.158702202735,
0.148561000523,
0.138801786045,
0.13111423613,
0.124172741197,
0.12118550274,
0.116729769989,
0.114368773619,
0.112258508476,
0.109581265731,
0.107567556101,
0.106203703339,
0.105914413831,
0.100275892098,
0.0922137620278,
0.0907926221656,
0.0927742523255,
0.0927230486847,
0.0943352319417,
0.0960447234824,
0.0978320822151,
0.100177642206,
0.103635469311,
0.107624911187,
0.112865506108,
0.119822942685,
0.126416101947,
0.134829310467,
0.145078945926,
0.156339514202,
0.17072503842,
0.184923799699,
0.205834140319,
0.218183775844,
0.238062646216,
0.249728461751,
0.266386032074,
0.279697592096,
0.278856021114,
0.277605498495,
0.267650130861,
0.254273362928,
0.235125892372,
0.222275773735,
0.203947232872,
0.184933762639,
0.172314930342,
0.155913887022,
0.144496408042,
0.134545310823,
0.126182149845,
0.119005272856,
0.112586387649,
0.107732666263,
0.103602254549,
0.100566276795,
0.0976382120838,
0.0961478250034,
0.0937495951359,
0.0928417827944,
0.092220894892,
0.0844101485373,
0.0808833610213,
0.0809665901897,
0.0817796494285,
0.082457425898,
0.0835454221224,
0.0852764552017,
0.0876240637765,
0.0905527908096,
0.0934963964658,
0.0985828005054,
0.103200430081,
0.109125632543,
0.11723948142,
0.125398787297,
0.136132907297,
0.148217830947,
0.164635828481,
0.179417644333,
0.196702615341,
0.219258034837,
0.236232213421,
0.256308432466,
0.269446071532,
0.283632511015,
0.287136835856,
0.287761804678,
0.270463490024,
0.258889708304,
0.23736539841,
0.215700449384,
0.195425990605,
0.17823801852,
0.162542724366,
0.150076722711,
0.136168421665,
0.126405467487,
0.116880582244,
0.109972350247,
0.102943998871,
0.0980349678243,
0.0938017275996,
0.0903709280792,
0.0873251325502,
0.0856128524232,
0.0838946853673,
0.0823840896944,
0.0816453591653,
0.0733077155394,
0.0729965561025,
0.0730554718686,
0.0737311400408,
0.0744743676857,
0.0757779984813,
0.0775918695219,
0.0795222210906,
0.0829479241347,
0.0865555515522,
0.0902182449408,
0.0960701393101,
0.101739789654,
0.109980658815,
0.118793523951,
0.129624553257,
0.141819201705,
0.156532765397,
0.17195180408,
0.196903694985,
0.212608961276,
0.238290180049,
0.257774967875,
0.283660353345,
0.30230584424,
0.301570627867,
0.300208120063,
0.281194010592,
0.261119653615,
0.238902065973,
0.211218717505,
0.191375198582,
0.172469417858,
0.15659287748,
0.140268376269,
0.130745365,
0.11874299053,
0.109020770345,
0.101509737793,
0.0968607652693,
0.0903309141214,
0.0858979608523,
0.0828257014357,
0.0798406586489,
0.0775675253759,
0.0759000925373,
0.0747099268218,
0.0736217445774,
0.0858503424856,
0.0887576404738,
0.0889251425829,
0.0905060602525,
0.0933891526012,
0.0963910711258,
0.100582287886,
0.105855852926,
0.115070844355,
0.124994567005,
0.136145033483,
0.153128309448,
0.175780983858,
0.198283435217,
0.231768165773,
0.275955390473,
0.314714557101,
0.369628522145,
0.398372429534,
0.434353807797,
0.39752398284,
0.362378565038,
0.31569472916,
0.275326477311,
0.229488689544,
0.198669386055,
0.177868384023,
0.153140702856,
0.135286135404,
0.124765757107,
0.113773043835,
0.10712162071,
0.101532794963,
0.0945190319619,
0.0919210809218,
0.0898145986849,
0.0755825799261,
0.0809351394435,
0.0807517761973,
0.0821220452853,
0.0843793825877,
0.0882157781778,
0.0914709433638,
0.0977486412944,
0.104650250078,
0.115839742342,
0.125851995975,
0.141889929759,
0.160382018937,
0.183765690831,
0.214569322734,
0.258750633175,
0.295433581918,
0.359179244164,
0.41768354312,
68.5722983399,
0.401805554797,
0.354717179255,
0.302287369068,
0.246397696024,
0.217146255997,
0.182400412036,
0.161966152185,
0.139431340792,
0.126690987934,
0.116109889932,
0.104999280931,
0.0980273325497,
0.0907142535559,
0.0873748993555,
0.0846912094793,
0.0823525030006,
0.0991731100419,
0.108546220528,
0.108798240175,
0.113826457857,
0.118128441549,
0.130270138888,
0.147588967466,
0.169672577964,
0.195907442167,
0.242278846727,
0.318074830703,
0.386838118224,
63.1720269184,
294.470924849,
0.514159198231,
0.381236223404,
0.304424386113,
0.237661894685,
0.198386683682,
0.165448742479,
0.146490474088,
0.131253041853,
0.12138058367,
0.113326903021,
0.0830512240647,
0.0939568577669,
0.0952221266222,
0.0975641218691,
0.105472946308,
0.1146356726,
0.125381882281,
0.140094737993,
0.15948065571,
0.196407831823,
0.229041761244,
0.283728786151,
0.337006268299,
0.378261063138,
0.32856791633,
0.277400712185,
0.228522669,
0.198649017059,
0.163159060817,
0.140867375246,
0.124942899015,
0.112640311665,
0.105161516748,
0.0994046379799,
0.129684695415,
0.146477810805,
0.159194682972,
0.171339813988,
0.206752085244,
0.257069402412,
0.325670196676,
0.377563208232,
0.33103845349,
0.258626405478,
0.208030576965,
0.17179266524,
0.0786877625262,
0.0916897113515,
0.0926597762436,
0.0994631556888,
0.110718334635,
0.122564197926,
0.137815653852,
0.146709443032,
0.137953060497,
0.123623607282,
0.109136213952,
0.0995648586431,
0.136289587149,
0.166054574158,
0.313257820506
);

Hi!

well, it has been a long time, haha… I am not sure this is THE solution, but may be worth checking.

I think the first patch may be the ground…? I say this because it should be either at the beginning or the end. Try ignoring the first or last patch and see if that makes more sense.

best!