public static Aplicador extraerAplicador(string[] fid, int lineaInicio) { int indNombre = Extraer.buscarSubStringEnFid(fid, "Points: ", lineaInicio); int finTotal = Array.IndexOf(fid, "", lineaInicio); Aplicador aplicador = new Aplicador() { nombre = (fid[indNombre].Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries))[1], fuentes = new List <Fuente>(), }; int inicio = indNombre + 2; int fin = Extraer.buscarSubStringEnFid(fid, "Points: ", inicio) - 1; if (fin == -1) { fin = finTotal - 1; } for (int i = inicio; i < fin + 1; i++) { string aux = fid[i]; string[] partes = aux.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); Fuente fuente = Fuente.extraer(partes); aplicador.fuentes.Add(fuente); } aplicador.numeroFuentes = aplicador.fuentes.Count(); return(aplicador); }
public static double tasaDosisPuntoFuente(Aplicador ap, Fuente f, PuntoDosis p, TablaHyT tabla) { double H = paramH(ap, f, p); double T = paramT(ap, f, p); return(tasaDosisHT(H, T, tabla)); }
public static List <Vector> directoresAplicador(Aplicador aplicador) { List <Vector> directores = new List <Vector>(); foreach (Fuente fuente in aplicador.fuentes) { Vector director = directorFuente(aplicador, fuente); directores.Add(director); } return(directores); }
public static int extraerAplicadores(string[] fid, List <Aplicador> aplicadores, int lineaInicio = 0) { int inicio = buscarSubStringEnFid(fid, "Points:", lineaInicio); int fin = Array.IndexOf(fid, "", inicio); while (inicio < fin) { Aplicador aplicador = Aplicador.extraerAplicador(fid, inicio); aplicadores.Add(aplicador); inicio += aplicador.fuentes.Count() + 2; } return(fin); }
public static Vector dF(Aplicador aplicador, Fuente fuente) { Vector directorFuente = new Vector(); int indiceFuente = aplicador.fuentes.IndexOf(fuente); if (indiceFuente == 0) { directorFuente = difEntreFuentes(aplicador.fuentes[indiceFuente], aplicador.fuentes[indiceFuente + 1]); } else if (indiceFuente == aplicador.fuentes.Count() - 1) { directorFuente = difEntreFuentes(aplicador.fuentes[indiceFuente - 1], aplicador.fuentes[indiceFuente]); } else { Vector director1 = difEntreFuentes(aplicador.fuentes[indiceFuente], aplicador.fuentes[indiceFuente + 1]); Vector director2 = difEntreFuentes(aplicador.fuentes[indiceFuente - 1], aplicador.fuentes[indiceFuente]); directorFuente = Vector.promedio(director1, director2); } return(directorFuente); }
public static double paramH(Aplicador ap, Fuente f, PuntoDosis p) { return(Math.Sqrt(Math.Pow(distanciaFuentePunto(f, p), 2) - Math.Pow(paramT(ap, f, p), 2))); }
public static double paramT(Aplicador ap, Fuente f, PuntoDosis p) { return(Vector.productoEscalar(vectorDistanciaFuentePunto(f, p), directorFuente(ap, f))); }
public static double dosisPuntoFuente(Aplicador ap, Fuente f, PuntoDosis p, TablaHyT tabla) { return(tasaDosisPuntoFuente(ap, f, p, tabla) * f.tiempo * tabla.factor); }