[us-commits] r286 - trunk/lib
svn at svn.aucsolutions.com
svn at svn.aucsolutions.com
Tue Apr 23 11:08:12 MDT 2019
Author: gegorbet
Date: 2019-04-23 17:08:11 +0000 (Tue, 23 Apr 2019)
New Revision: 286
Modified:
trunk/lib/payload_manager.php
Log:
2dsa mods to grid_point,grid_repetitions logic for greater responsiveness to user-given parameters
Modified: trunk/lib/payload_manager.php
===================================================================
--- trunk/lib/payload_manager.php 2019-04-17 17:11:28 UTC (rev 285)
+++ trunk/lib/payload_manager.php 2019-04-23 17:08:11 UTC (rev 286)
@@ -428,10 +428,9 @@
$s_max_in = $_POST['s_value_max'];
$k_min_in = $_POST['ff0_min'];
$k_max_in = $_POST['ff0_max'];
- $s_range = $s_max_in - $s_min_in;
- $k_range = $k_max_in - $k_min_in;
// Compute 'uniform_grid' (grid repetitions)
+
$gpoints_s = $_POST['s_grid_points'];
$gpoints_k = $_POST['ff0_grid_points'];
if ( $gpoints_s < 10 )
@@ -442,53 +441,72 @@
$gpoints_k = 10;
if ( $gpoints_k > 2100 )
$gpoints_k = 2100;
- $gptin_s = $gpoints_s;
- $gptin_k = $gpoints_k;
- $s_delta = $s_range / ( $gpoints_s - 1 );
- $k_delta = $k_range / ( $gpoints_k - 1 );
- $gpoints = $gpoints_s * $gpoints_k;
- $repsgrid = pow( $gpoints, 0.25 );
- $gridreps = (int)( $repsgrid + 0.5 );
- $grround = $gridreps - 1;
- $subpts_s = (int)( ( $gpoints_s + $grround ) / $gridreps );
- $subpts_k = (int)( ( $gpoints_k + $grround ) / $gridreps );
- $subpts = $subpts_s * $subpts_k;
- while( $subpts > 200 && $gridreps < 40 )
+ // Accumulate a list of grid repetition evenly dividing into S points
+ $greps_s = array();
+ $count_grs = 0;
+ for ( $jreps = 2; $jreps < 41; $jreps++ )
{
+ $testp = (int)( $gpoints_s / $jreps ) * $jreps;
+ if ( $testp == $gpoints_s )
+ { // Save a repetition that divides evenly into S grid points
+ $greps_s[] = $jreps;
+ $count_grs++;
+ }
+ }
+ // Find the repetitions and K grid points that work best
+ $kdiff = 99999;
+ $kreps = $greps_s[ 0 ];
+ $kgridp_k = $gpoints_k;
+ for ( $jrx = 0; $jrx < $count_grs; $jrx++ )
+ { // Examine each grid repetition from the S list
+ $jreps = $greps_s[ $jrx ];
+ $subpts_s = (int)( $gpoints_s / $jreps );
+ $subpts_k = (int)( $gpoints_k / $jreps );
+ $jgridp_k = $subpts_k * $jreps;
+ $nsubgs = $jreps * $jreps;
+ $subgsz = $subpts_s * $subpts_k;
+ $jdiff = $nsubgs - $subgsz;
+ if ( $jdiff < 0 )
+ $jdiff = 0 - $jdiff;
+ if ( $jdiff < $kdiff )
+ { // Count and size of subgrid are closely matched
+ $kdiff = $jdiff;
+ $kgridp_k = $jgridp_k;
+ $kreps = $jreps;
+ }
+ }
+
+ $gridreps = $kreps;
+ $gpoints_k = $kgridp_k;
+ $subpts_s = (int)( $gpoints_s / $gridreps );
+ $subpts_k = (int)( $gpoints_k / $gridreps );
+ $gpoints_s = $subpts_s * $gridreps;
+ $gpoints_k = $subpts_k * $gridreps;
+ $subg_size = $subpts_s * $subpts_k;
+ while( $subg_size > 200 || $gridreps < 2 )
+ {
$gridreps++;
- $grround = $gridreps - 1;
- $subpts_s = (int)( ( $gpoints_s + $grround ) / $gridreps );
- $subpts_k = (int)( ( $gpoints_k + $grround ) / $gridreps );
- $subpts = $subpts_s * $subpts_k;
+ $subpts_s = (int)( $gpoints_s / $gridreps );
+ $subpts_k = (int)( $gpoints_k / $gridreps );
+ $subg_size = $subpts_s * $subpts_k;
}
- while( $subpts < 40 && $gridreps > 1 )
+ while( $subg_size < 40 || $gridreps > 160 )
{
$gridreps--;
- $grround = $gridreps - 1;
- $subpts_s = (int)( ( $gpoints_s + $grround ) / $gridreps );
- $subpts_k = (int)( ( $gpoints_k + $grround ) / $gridreps );
- $subpts = $subpts_s * $subpts_k;
+ $subpts_s = (int)( $gpoints_s / $gridreps );
+ $subpts_k = (int)( $gpoints_k / $gridreps );
+ $subg_size = $subpts_s * $subpts_k;
}
$gpoints_s = $subpts_s * $gridreps;
$gpoints_k = $subpts_k * $gridreps;
- if ( $gpoints_s < $gptin_s )
- $gpoints_s = $gpoints_s + $gridreps;
- if ( $gpoints_k < $gptin_k )
- $gpoints_k = $gpoints_k + $gridreps;
- $s_range_u = ( $gpoints_s - 1 ) * $s_delta;
- $k_range_u = ( $gpoints_k - 1 ) * $k_delta;
- $s_min_use = $s_min_in;
- $s_max_use = $s_min_use + $s_range_u;
- $k_min_use = $k_min_in;
- $k_max_use = $k_min_use + $k_range_u;
$job_parameters['s_grid_points'] = $gpoints_s;
$job_parameters['ff0_grid_points'] = $gpoints_k;
$job_parameters['uniform_grid'] = $gridreps;
- $job_parameters['s_min'] = $s_min_use;
- $job_parameters['s_max'] = $s_max_use;
- $job_parameters['ff0_min'] = $k_min_use;
- $job_parameters['ff0_max'] = $k_max_use;
+ $job_parameters['s_min'] = $s_min_in;
+ $job_parameters['s_max'] = $s_max_in;
+ $job_parameters['ff0_min'] = $k_min_in;
+ $job_parameters['ff0_max'] = $k_max_in;
$job_parameters['mc_iterations'] = $_POST['mc_iterations'];
More information about the us-commits
mailing list