Foro de Tiempo.com

Foro general de Meteorología => Técnica e instrumentos meteorológicos => Software => Mensaje iniciado por: Vaqueret di Rondó en Martes 19 Febrero 2008 22:02:10 pm

Título: Cálculo del 'Rain Rate'
Publicado por: Vaqueret di Rondó en Martes 19 Febrero 2008 22:02:10 pm
El problema es el siguiente: 
Dada una sucesión de datos pluviométricos cincominutarios, ¿cual sería la mejor manera de calcular el 'rain rate' (por def. lluvia por minuto)?

Mi idea era un ajuste cuadrático por método de Lin , pero como soy tan perro agredecería algún algoritmo, preferiblemente en C, pascal o Java.  ;D
Título: Re: Cálculo del 'Rain Rate'
Publicado por: Breitling en Miércoles 20 Febrero 2008 18:24:17 pm
Subiste el listón por encima de la media del foro  :)

Nunca me metí a implementar la intensidad de lluvia porque ya me la dieron hecha, pero te puedo ofrecer cómo lo hace Davis en sus estaciones. Creo que no tienes problemas con el inglés, así que ahí va:

RAINFALL RATE

Parameters Used: Rain Total (actually, rain rate is a measured variable in the sense that it is measured by the ISS and transmitted to the display console, whereas all other calculated variables are determined by the console from data received from the ISS.)

Formula:
Under normal conditions, rain rate data is sent with a nominal interval of 10 to 12 seconds. Every time a rain tip or click occurs, a new rain rate value is computed (from the timer values) and the rate timers are reset to zero. Rain rate is calculated based on the time between successive tips of the rain collector. The rain rate value is the highest rate since the last transmitted rain rate data packet. (Under most conditions, however, a rain tip will not occur every 10 to 12 seconds.)

If there have been no rain tips since the last rain rate data transmission, then the rain rate based on the time since that last tip is indicated. This results in slowly decaying rate values as a rain storm ends, instead of showing a rain rate which abruptly drops to zero. This results in a more realistic representation of the actual rain event.

If this time exceeds roughly 15 minutes, then the rain rate value is reset to zero. This period of time was chosen because 15 minutes is defined by the U.S. National Weather Service as intervening time upon which one rain "event" is considered separate from another rain "event". This is also the shortest period of time that the Umbrella will be seen on the display console after the onset of rain.

REFERENCES
"Surface Weather Observations and Reports ". Office of the Federal Coordinator for Meteorological Services and Supporting Research, Washington, DC, 1998
Título: Re: Cálculo del 'Rain Rate'
Publicado por: Vaqueret di Rondó en Miércoles 20 Febrero 2008 19:18:14 pm
 :-* :-* :-* :-* :-* :-* :-* :-* :-*

Simple, pero efectivo.
El único problema está en establecer el valor para el primer vuelco del pluvio. Quizá tome el periodo indicado de 15 minutos para calcularlo.
Título: Re: Cálculo del 'Rain Rate'
Publicado por: Breitling en Miércoles 20 Febrero 2008 19:33:25 pm
El único problema está en establecer el valor para el primer vuelco del pluvio. Quizá tome el periodo indicado de 15 minutos para calcularlo.

Puede ser. El valor que te dará será muy pequeño (dependiendo de la resolución del vuelco). En cuanto tengas un segundo vuelco, el sistema rueda solo ya.
Título: Re: Cálculo del 'Rain Rate'
Publicado por: Vaqueret di Rondó en Miércoles 20 Febrero 2008 20:07:22 pm
Mas o menos lo que he entendido:

Código: [Seleccionar]


 // Globales

  TDateTime HoraUltVuelco;
  // double MaxRainRate;
 
double CalculaRainRate(const TDatoConsola DatoConsola)
{
     double _15m=(double)TDateTime(0,15,0,0,0);  // 15 minutos;
     TDateTime HoraActual=DatoConsola->Hora; 
        // es que voy a la hora de la consola, por si estuviera en UTC;
     
     double Lapso=(double)HoraActual-(double)HoraUltVuelco;
     
     if (Lapso>_15m) 
          if (DatoConsola->Lluvia)  {   //  Empieza un nuevo evento
              HoraUltVuelco=HoraActual;
              return DatoConsola->Lluvia/.25; //15min en horas
          }
          else   return 0  // finaliza evento
     else         
          if (DatoConsola->Lluvia)     
              HoraUltVuelco=HoraActual;
           return DatoConsola->Lluvia/(Lapso*24.0); //TdateTime a Horas;
     }   
}
Título: Re: Cálculo del 'Rain Rate'
Publicado por: Vaqueret di Rondó en Miércoles 20 Febrero 2008 20:23:49 pm
Sin embargo, voy a intentar agrupar en tramos móviles de n minutos. Creo que se ajusta mejor a la realidad( en el sentido de que para que la fuerza de la lluvia tenga repercusiones debería  durar como mínimo 1 o dos minutos)

Claro, el problema de ésto es que si tomo tramos fijos de.. pongamos 5 minutos ¿como sé que no me cambia drásticamente el valor si cojo la mitad (por poner un ejemplo) de dos tramos consecutivos?

PD: Acabo de descubrir el trabajo de Roberto en la RAM (https://www.tiempo.com/ram/447/analisis-de-la-intensidad-de-precipitacion-metodo-de-la-intensidad-contigua/)
Título: Re: Cálculo del 'Rain Rate'
Publicado por: rayo_cruces en Miércoles 20 Febrero 2008 20:49:22 pm
¿En que escribistes la función Vaqueret? ¿Pascal?

Saludos  8)
Título: Re: Cálculo del 'Rain Rate'
Publicado por: Vaqueret di Rondó en Miércoles 20 Febrero 2008 20:51:57 pm
No, en C. Pero en pascal sustituyes los = por := y poco más y lo tienes.
Título: Re: Cálculo del 'Rain Rate'
Publicado por: rayo_cruces en Miércoles 20 Febrero 2008 21:38:51 pm
No, en C. Pero en pascal sustituyes los = por := y poco más y lo tienes.

Realmente el tiempo no perdona, hace algunos años yo programé en ambos lenguajes y no me perdono no haber conocido el código. Por el momento tengo dos amigos que me estan embullando a programar de nuevo pero en Python, no sé si lo tome en serio.

Saludos  8)
Título: Re: Cálculo del 'Rain Rate'
Publicado por: vigilant en Jueves 21 Febrero 2008 10:29:44 am
https://www.tiempo.com/ram/447/analisis-de-la-intensidad-de-precipitacion-metodo-de-la-intensidad-contigua/

Gracias Vigi, me viene de perlas para ésto (https://foro.tiempo.com/index.php/topic,85451.new.html)

No había visto este tópic. La verdad es que sí parece apropiado.

Saludos ;)