title: Why are finite differences of static input variables used to calculate the Jacobian? (OpenMDAO 2.4)
body: <p>I have been using the SLSQP algorithm to run some MDO problems with <code>ExplicitComponents</code> only. Each component has a runtime of around 10 seconds and 60-100 input variables. Most of the input variables are static input variables that will remain constant during the entire optimization. The static input variables originate from an <code>IndepVarComp</code>. The <code>ExplicitComponents</code> are black boxes, so no information is available on the partials. </p>
  
  <p>I noticed that when the Jacobian is calculated in the <code>compute_totals()</code>, the components are linearized with respect to all their input values. In the <code>compute_approximations()</code> a finite difference is calculated over all the input values, including the static input values. So, my question is: why is a finite difference calculation performed over these static input variables? As the values remain constant, I’m not sure why this information would be useful?</p>
  
  <p>Furthermore, if I understand it correctly, the components are linearized to get the sub-Jacobians, which are then used to calculate the total Jacobian. However, is it possible to directly calculate a finite-difference over the entire group instead of linearizing each component? With the runtimes of my components and amount of input variables, it will take a long time to perform the linearization of each component. However, the optimization problem has only 3 design variables. So, if I could perform three finite difference calculations over the entire MDA to calculate the total Jacobian, the total runtime will decrease significantly. </p>