[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[IDV #NHB-806382]: Difficulty with FFDI formula expression
- Subject: [IDV #NHB-806382]: Difficulty with FFDI formula expression
- Date: Tue, 20 Apr 2010 16:37:14 -0600
Hi Simon-
Finally getting back to you on this one.
> Full Name: Simon Metcalf
> Email Address: address@hidden
> Organization: NSW Rural Fire Service
> Package Version: 2.7u2 build date:2009-08-26 16:33 UTC
> Operating System: Windows XP
> Hardware: Java: home: C:\Program Files\IDV_2.7u2\jre version: 1.6.0_13
> j3d:1.5.2 fcs (build4)
> Description of problem: Dear team,
>
> I've been unable to get IDV to accept a formulaic expression of Forest Fire
> Danger Index; which is as follows:
>
> 0.5 + 2.0 * exp(-0.450 + log(DF) - (0.0345 * rh) + (0.0338 * (temp - 273)) +
> (0.0234 * (3.6 * u10)) );
>
The main problem is that the IDV adheres to unit integrity so you can't create
a new physically meaningful unit by subtracting a % from a Kelvin.
> There appear to be a couple of problems. Firstly, IDV is not accepting
> log(DF), which is supposed to be the natural logarithm of DF.
I didn't get the log to fail. For the other problem, I added a noUnit Jython
procedure to the nightly build:
def noUnit(field):
""" remove the units from a grid """
import visad
from visad import CommonUnit
newunit = CommonUnit.promiscuous
rt = GridUtil.getParamType(field).getRealComponents()[0]
newType = Util.makeRealType(rt.getName(), visad.CommonUnit.promiscuous)
return GridUtil.setParamType(field, newType,0)
so, you can change your formula to be:
0.5 + 2.0 * exp(-0.450 + noUnit(log(DF)) - (0.0345 * noUnit(rh)) + (0.0338 *
(noUnit(temp) - 273)) + (0.0234 * (3.6 * noUnit(u10))) );
> If I remove log(DF) from the expression and replace it with a default value,
> the expression seems to work to the point that it calculates the grids but
> then it falls down before displaying the result with a rather unhelpful and
> longwinded error log as follows:
> ________________
> Traceback (innermost last):
> File "<string>", line 1, in ?
> at visad.RealType.binary(RealType.java:473)
> at visad.FunctionType.binary(FunctionType.java:270)
> at visad.FunctionType.binary(FunctionType.java:270)
> at visad.DataImpl.binary(DataImpl.java:138)
> at visad.DataImpl.add(DataImpl.java:179)
> at visad.DataImpl.__add__(DataImpl.java:1393)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> __________
>
> The error log when using log(DF) is as follows:
> _________
> Traceback (innermost last):
> File "<string>", line 1, in ?
> TypeError: log(): 1st arg can't be coerced to visad.Data
> _____________
>
> Can you provide some assistance in identifying the problem and guidance to
> help me get this expression to work in IDV? Unfortunately, I've had similar
> problems getting other expressions like Haines Index to work also.
>
> ******************
> Stack trace:
> Traceback (innermost last):
> File "<string>", line 1, in ?
> at visad.RealType.binary(RealType.java:473)
>
> at visad.FunctionType.binary(FunctionType.java:270)
>
> at visad.FunctionType.binary(FunctionType.java:270)
>
> at visad.DataImpl.binary(DataImpl.java:138)
>
> at visad.DataImpl.add(DataImpl.java:179)
>
> at visad.DataImpl.__add__(DataImpl.java:1393)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>
> at java.lang.reflect.Method.invoke(Unknown Source)
>
>
> visad.UnitException: visad.UnitException
>
>
>
Ticket Details
===================
Ticket ID: NHB-806382
Department: Support IDV
Priority: Critical
Status: Open