public static double calcularKs(double Vtot, double LVtot, double LVred, bool noUsa, bool usaLB, Equipo equipo, EnergiaFotones energia, int DFSoISO, double Vred) { if (noUsa) { return(1); } else if (usaLB) { return(obtenerCaliReferencia(equipo, energia, DFSoISO).ks); } else { if (equipo.Fuente == 1)//Co { return(Math.Round((Math.Pow((Vtot / Vred), 2) - 1) / (Math.Pow((Vtot / Vred), 2) - (LVtot / LVred)), 4)); } else { double a0 = 0; double a1 = 0; double a2 = 0; if (equipo.TipoDeHaz == 1) //Pulsado { string[] fid = Tabla.Cargar(Tabla.tabla_Ks_pulsados); double[] v1_v2Etiquetas = Tabla.extraerDoubleArray(fid, 0); string[] a0a1a2Etiquetas = Tabla.extraerStringArray(fid, 1); double[,] tabla = Tabla.extraerMatriz(fid, 3, 5, v1_v2Etiquetas.Count(), a0a1a2Etiquetas.Count()); a0 = Calcular.interpolatabla(Vtot / Vred, "a0", v1_v2Etiquetas, a0a1a2Etiquetas, tabla); a1 = Calcular.interpolatabla(Vtot / Vred, "a1", v1_v2Etiquetas, a0a1a2Etiquetas, tabla); a2 = Calcular.interpolatabla(Vtot / Vred, "a2", v1_v2Etiquetas, a0a1a2Etiquetas, tabla); } else { string[] fid = Tabla.Cargar(Tabla.tabla_Ks_pulsadosYbarridos); double[] v1_v2Etiquetas = Tabla.extraerDoubleArray(fid, 0); string[] a0a1a2Etiquetas = Tabla.extraerStringArray(fid, 1); double[,] tabla = Tabla.extraerMatriz(fid, 3, 5, v1_v2Etiquetas.Count(), a0a1a2Etiquetas.Count()); a0 = Calcular.interpolatabla(Vtot / Vred, "a0", v1_v2Etiquetas, a0a1a2Etiquetas, tabla); a1 = Calcular.interpolatabla(Vtot / Vred, "a1", v1_v2Etiquetas, a0a1a2Etiquetas, tabla); a2 = Calcular.interpolatabla(Vtot / Vred, "a2", v1_v2Etiquetas, a0a1a2Etiquetas, tabla); } return(Math.Round(a0 + a1 * Math.Abs((LVtot / LVred)) + a2 * Math.Pow((LVtot / LVred), 2), 4)); } } }