[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[IDV #BVE-541882]: vector divided by data



Hi Alberto-

> Dearest Don... We did it! I had to change some things but I got the
> results I was looking for. Your mails have been more than inspirating.
> 
> Millions of sincere thanks.

Glad it worked out.  I'll close out the ticket.  Good luck
with your research.

Don

> El 01/04/2008, a las 0:23, Unidata IDV Support escribió:
> 
> > Hi Alberto-
> >
> >> Dearest Don... Our University mail server was down for the whole week
> >> (we have a large eastern holiday in Spain)... so, if you have sent me
> >> something I might not have received it.
> >
> > No, I had to go out of town on a family emergency and am just back
> > in the office today.  Sorry for the delay in responding.
> >
> > Again, the basic problem is one of units.  When  you divide the
> > u and v components by V0, you are dividing m/sec by m/sec so you
> > end up with dimensionless units.  When you try to add vector2
> > and -vector, you'll get a Unit exception because one has no
> > units and the other has m/sec.  The only way I know around this
> > is to fake the system by changing the units (but not the values)
> > of V0 to be m2/sec2 so when you divide that into the vector, you'll
> > end up with components with m/sec for units.  So, here's the
> > code:
> >
> > def ekmanVector(U10,V10,HGT):
> >  W=sqrt(U10*U10+V10*V10)
> >  V0=0.0127*W/sqrt(sin(latr(U10)))
> >  vector=makeTrueVector(V0*0.707,V0*0.707)
> >  vector2=makeTrueVector(U10,V10)
> >  V1 = newUnit(V0,"offset","m2/s2")
> >  u = newName(ur(vector2)/V1,"U")
> >  v = newName(vr(vector2)/V1,"V")
> >  vector2=vecr(u,v)
> >  sum=add(vector2,-vector)
> >  return sum
> >
> >
> > however, when I plot this, I get very high values for the resulting
> > vectors, so I think there's some problem with the math logic of
> > what you are trying to accomplish.  All my fix does is correct the
> > units.  I'll try to check with some of our experts here on the logic,
> > but I'll be out the rest of this week.
> >
> >> I'd also like to know your work position (department, commission,
> >> field of research etc.) inside Unidata in order to rightly cite your
> >> name/job in my diploma thesis manuscript. It's the least I can do in
> >> order to thank your help.
> >
> > Here's my vita:
> >
> > Don Murray is a meteorologist/software engineer at the Unidata
> > Program Center in Boulder, Colorado.  He is currently the lead
> > developer of Unidata’s Integrated Data Viewer (IDV).  His interests
> > include geoscience visualization, remote data access, glacial
> > geology and gardening.  He has a M.S. in Earth Sciences from Montana
> > State University and is a member of the American Meteorological
> > Society.  You can contact him at address@hidden.
> >
> > You can modify that to suit your needs.  Thanks for including me.
> >
> >> Best regards from sunny Spain.
> >
> > Same from snowy Colorado.
> >
> > Don
> >
> >
> >> El 11/03/2008, a las 17:41, Unidata IDV Support escribió:
> >>
> >>> Hi Alberto-
> >>>
> >>> Thanks Don... take your time. You've already got to deserve being
> >>>> cited/thanked on my manuscript.
> >>>>
> >>>> Regards form the still un-iphoned Spain.
> >>>
> >>> No progress on this yet and I'll be out until next week.  I'll
> >>> get back to it then.
> >>>
> >>> Don
> >>>> Alberto.
> >>>>
> >>>> El 07/03/2008, a las 13:41, Unidata IDV Support escribió:
> >>>>
> >>>>> Hi Alberto-
> >>>>>
> >>>>> I will get back to you next week on this.
> >>>>>
> >>>>> Don
> >>>>>
> >>>>>> Dearest Don (Ok... I guess it's always Don Murray behind the
> >>>>>> curtains :-) ). Thanks God.
> >>>>>>
> >>>>>> Seriously, thanks for your offer beforehand... I definitely
> >>>>>> think I
> >>>>>> need your help... Let me tell you I'm planning to include your
> >>>>>> name
> >>>>>> on
> >>>>>> the citations, references and thanks chapters of my research
> >>>>>> work...
> >>>>>> If you kindly allow me to :-) You can eventually include a
> >>>>>> reference
> >>>>>> to my work in your CV if you like.
> >>>>>>
> >>>>>> Ok...I'm trying to derive the Ekman vectors of the very first
> >>>>>> Ekman
> >>>>>> layer. Winds blowing over the sea induce water currents which are
> >>>>>> always 45º to the right of the wind forcing vector: that simple.
> >>>>>> The
> >>>>>> module (induced water current speed) is obtained with this simple
> >>>>>> expression:
> >>>>>>
> >>>>>> V0 = 0.0127·W/sqrt(sen(L))   where
> >>>>>>
> >>>>>> 0.0127 is a dimensionless parameter
> >>>>>> W is the wind vector module, W=sqrt(U10*U10+V10*V10)  in m/s
> >>>>>> sqrt(sen(L)) is the sine of the Latitude, square rooted
> >>>>>> (dimensionless)
> >>>>>>
> >>>>>> The Ekman vector (water current speed) is then builded in this
> >>>>>> simply
> >>>>>> way: V = (V0*cos(45), V0*sin(45))   (just a 45º vector bended to
> >>>>>> the
> >>>>>> right with respect to to the origin of coordinates and with
> >>>>>> module
> >>>>>> V0). V is build with makeTrueVector().
> >>>>>>
> >>>>>> BUT... V must always be 45º bended to the right of the wind
> >>>>>> vector
> >>>>>> W(U10,V10)  (and not the origin of coordinates), that's why I
> >>>>>> must
> >>>>>> finally add both vectors V+W. BUT as W is ~100 times greater than
> >>>>>> V,
> >>>>>> if I add the two vectors, I'll end up with a sum vector which
> >>>>>> will
> >>>>>> almost be like W... that's why I had the idea of reducing W's
> >>>>>> module
> >>>>>> to V0. I'm just interested in angle sum... I already know the
> >>>>>> water
> >>>>>> current vector intensity (V0).
> >>>>>>
> >>>>>> I don't know if I'm explaining myself... the induced water
> >>>>>> current
> >>>>>> speed vector is just a vector with module V0 and bended 45º to
> >>>>>> the
> >>>>>> right of the forcing wind vector. Example: if the W is 60º, then
> >>>>>> V is
> >>>>>> 45º to the right of that (that's 105º) and module V0.
> >>>>>>
> >>>>>> The reasoning is extremely simple but somehow awkward for me to
> >>>>>> program it on jythoon/IDV. If you could help I'd be strongly and
> >>>>>> eternally thankful. If I could make this simple calculation
> >>>>>> directly
> >>>>>> on IDV I'll be able to paint and animate water currents very
> >>>>>> easily.
> >>>>>> And on the fantastic IDV.
> >>>>>>
> >>>>>> Best regards from Spain,
> >>>>>> Alberto.
> >>>>>>
> >>>>>> PS: the reason why I'm including HGT (terrain height) on the
> >>>>>> formula
> >>>>>> is just a trick planned for later. I was planning to multiply the
> >>>>>> sum
> >>>>>> vector by a power of cos(HGT)... Why? Very simple: is just a
> >>>>>> quick
> >>>>>> trick to faint V0 module when terrain height goes up (on land)...
> >>>>>> because I don't want sea surface current speed vector to be
> >>>>>> painted
> >>>>>> on
> >>>>>> land :-) I guess IDV doesn't understand that V is water current
> >>>>>> and
> >>>>>> it's not to paint anything on land. IDV is smart, but not so
> >>>>>> smart as
> >>>>>> to understand that.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> El 06/03/2008, a las 16:53, Unidata IDV Support escribió:
> >>>>>>
> >>>>>>> Hi Alberto-
> >>>>>>>
> >>>>>>>> (If you're Don Murray replying me, thanks for your previous
> >>>>>>>> help!)
> >>>>>>>
> >>>>>>> Glad to help.
> >>>>>>>
> >>>>>>>> Hi... My name is Alberto Corbí and I'm a PhD Student happily
> >>>>>>>> using
> >>>>>>>> IDV
> >>>>>>>> to analyze WRF netCDF output. Here's my question.
> >>>>>>>>
> >>>>>>>> I'd like to have a wind vector (composed with makeTrueVector)
> >>>>>>>> divided
> >>>>>>>> by a "number" derived from the current latitude. And I get this
> >>>>>>>> message:
> >>>>>>>>
> >>>>>>>> visad.TypeException: visad.TypeException: FunctionType.binary:
> >>>>>>>> types
> >>>>>>>> don't match
> >>>>>>>
> >>>>>>> The problem is that you are trying to divide a vector by a
> >>>>>>> scalar
> >>>>>>> and this is not allowed in the abstract VisAD math model.  You
> >>>>>>> need
> >>>>>>> to divide each component of the vector by the scalar.
> >>>>>>>
> >>>>>>> In general, the VisAD data model carries along units with all
> >>>>>>> mathematical operators so you need to be careful about making
> >>>>>>> sure your units all are compatible.  See below:
> >>>>>>>
> >>>>>>>>
> >>>>>>>> Here's my very very simple function:
> >>>>>>>>
> >>>>>>>> def ekmanVector(U10,V10,HGT):
> >>>>>>>> W=sqrt(U10*U10+V10*V10)
> >>>>>>>> V0=0.0127*W/sqrt(sin(latr(U10)))
> >>>>>>>> vector=makeTrueVector(V0*0.707,V0*0.707)
> >>>>>>>> vector2=makeTrueVector(U10,V10) / V0     <- Here's the error
> >>>>>>>> (or so
> >>>>>>>> I believe)
> >>>>>>>> sum=add(vector2,-vector)
> >>>>>>>> return sum
> >>>>>>>
> >>>>>>> So, if you change the above to:
> >>>>>>>
> >>>>>>> def ekmanVector(U10,V10,HGT):
> >>>>>>> W=sqrt(U10*U10+V10*V10)
> >>>>>>> V0=0.0127*W/sqrt(sin(latr(U10)))
> >>>>>>> vector=makeTrueVector(V0*0.707,V0*0.707)
> >>>>>>> vector2=makeTrueVector(U10,V10)
> >>>>>>> vector2=vecr(ur(vector2)/V0,vr(vector2)/V0)
> >>>>>>> sum=add(vector2,-vector)
> >>>>>>> return sum
> >>>>>>>
> >>>>>>> You'll get a little further.  However, dividing the U component
> >>>>>>> of vector2 by V0 will result in dimensionless units (m.s-1/
> >>>>>>> m.s-1)
> >>>>>>> so you'll end up with a UnitException when trying to add
> >>>>>>> vector2 (dimensionless) to -vector (m.s-1).
> >>>>>>>
> >>>>>>>> I'm just trying to derive Ekman surface currents: that simple!
> >>>>>>>
> >>>>>>> Can you send along the formula or a reference so I can try to
> >>>>>>> assist you further?  That will help me understand what units
> >>>>>>> the constants (0.0127, 0.707) are supposed to be.  Also, what is
> >>>>>>> HGT being used for?
> >>>>>>>
> >>>>>>>> Thanks millions in advance, (again, I haven't found anything in
> >>>>>>>> forums
> >>>>>>>> nor in mailing lists and I'm sorry to disturb you)
> >>>>>>>
> >>>>>>> Thanks for checking there first.
> >>>>>>>
> >>>>>>> Don Murray
> >>>>>>>
> >>>>>>>
> >>>>>>> Ticket Details
> >>>>>>> ===================
> >>>>>>> Ticket ID: BVE-541882
> >>>>>>> Department: Support IDV
> >>>>>>> Priority: Normal
> >>>>>>> Status: Open
> >>>>>>>
> >>>>>>
> >>>>>> Alberto Corbi Bellot
> >>>>>> Estudiante 3er Ciclo
> >>>>>> Ciencias del Mar
> >>>>>> Universidad Católica de Valencia
> >>>>>> San Vicente Mártir
> >>>>>> Tel: 610457462
> >>>>>>
> >>>>>>
> >>>>>
> >>>>>
> >>>>> Ticket Details
> >>>>> ===================
> >>>>> Ticket ID: BVE-541882
> >>>>> Department: Support IDV
> >>>>> Priority: Normal
> >>>>> Status: Open
> >>>>>
> >>>>
> >>>> Alberto Corbi Bellot
> >>>> Estudiante 3er Ciclo
> >>>> Ciencias del Mar
> >>>> Universidad Católica de Valencia
> >>>> San Vicente Mártir
> >>>> Tel: 610457462
> >>>>
> >>>>
> >>>
> >>>
> >>> Ticket Details
> >>> ===================
> >>> Ticket ID: BVE-541882
> >>> Department: Support IDV
> >>> Priority: Normal
> >>> Status: Open
> >>>
> >>
> >> Alberto Corbi Bellot
> >> Estudiante 3er Ciclo
> >> Ciencias del Mar
> >> Universidad Católica de Valencia
> >> San Vicente Mártir
> >> Tel: 610457462
> >>
> >>
> >
> >
> > Ticket Details
> > ===================
> > Ticket ID: BVE-541882
> > Department: Support IDV
> > Priority: Normal
> > Status: Open
> >
> 
> Alberto Corbi Bellot
> Estudiante 3er Ciclo
> Ciencias del Mar
> Universidad Católica de Valencia
> San Vicente Mártir
> Tel: 610457462
> 
> 


Ticket Details
===================
Ticket ID: BVE-541882
Department: Support IDV
Priority: Normal
Status: Closed