示例#1
0
        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);
        }
示例#2
0
        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));
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
 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)));
 }
示例#7
0
 public static double paramT(Aplicador ap, Fuente f, PuntoDosis p)
 {
     return(Vector.productoEscalar(vectorDistanciaFuentePunto(f, p), directorFuente(ap, f)));
 }
示例#8
0
 public static double dosisPuntoFuente(Aplicador ap, Fuente f, PuntoDosis p, TablaHyT tabla)
 {
     return(tasaDosisPuntoFuente(ap, f, p, tabla) * f.tiempo * tabla.factor);
 }