This archive contains answers to questions sent to Unidata support through mid-2025. Note that the archive is no longer being updated. We provide the archive for reference; many of the answers presented here remain technically correct, even if somewhat outdated. For the most up-to-date information on the use of NSF Unidata software and data services, please consult the Software Documentation first.
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