public ArrayParametersComputedList(GISData gis, ArrayParameterList array)
            : base(new List<FloatParameter>(),defaults)
        {
            int numModules = calcNumPanelsOnRoof(gis.width, gis.height, array.module_model_params.getWidth(), array.module_model_params.getHeight());
            if (array.inverter_model_params == null)
            {
                InverterModelParams imp = new DatasheetInverterModel("default", numModules * array.module_model_params.getRatedPower() * 1.15f);
                array.setInverterModelParams(imp);
            }

            int[] shape = calcArrayWiring(numModules, array.inverter_model_params.getMaxRatedVoltage(), array.module_model_params.getVmax());

            Dictionary<string, IParameter> update = new Dictionary<string, IParameter>() {
                {"modules_per_string", new FloatParameter("modules_per_string",shape[0])},
                {"strings_in_parallel", new FloatParameter("strings_in_parallel",shape[1])},
                {"subarray1_tilt", new FloatParameter("subarray1_tilt",gis.tilt)},
                {"subarray1_azimuth", new FloatParameter("subarray1_azimuth",gis.azimuth)},
                {"inverter_count", new FloatParameter("inverter_count", 1)}
            };
            parameters.Clear();
            foreach (string key in update.Keys)
            {
                parameters.Add(key,update[key]);
            }
        }
        public ArrayParametersComputedList(GISData gis, ArrayParameterList array) : base(new List <FloatParameter>(), defaults)
        {
            int numModules = calcNumPanelsOnRoof(gis.width, gis.height, array.module_model_params.getWidth(), array.module_model_params.getHeight());

            if (array.inverter_model_params == null)
            {
                InverterModelParams imp = new DatasheetInverterModel("default", numModules * array.module_model_params.getRatedPower() * 1.15f);
                array.setInverterModelParams(imp);
            }

            int[] shape = calcArrayWiring(numModules, array.inverter_model_params.getMaxRatedVoltage(), array.module_model_params.getVmax());

            Dictionary <string, IParameter> update = new Dictionary <string, IParameter>()
            {
                { "modules_per_string", new FloatParameter("modules_per_string", shape[0]) },
                { "strings_in_parallel", new FloatParameter("strings_in_parallel", shape[1]) },
                { "subarray1_tilt", new FloatParameter("subarray1_tilt", gis.tilt) },
                { "subarray1_azimuth", new FloatParameter("subarray1_azimuth", gis.azimuth) },
                { "inverter_count", new FloatParameter("inverter_count", 1) }
            };

            parameters.Clear();
            foreach (string key in update.Keys)
            {
                parameters.Add(key, update[key]);
            }
        }