Thank you Doug!  Indeed this explicitness you have suggested works.

I don't understand why I must by explicit.  In fact here there is one
oddity that I had to play around with to finally get to work.  N

  my $dtheta = $nc->getatt( 'seasonde_Angular_Resolution',
sprintf('seasonde_Header_%s',uc($self->{station_site})) );

  my $thetas_degrees =
zeroes(350/$dtheta->sclr)->xlinvals(0,(360-$dtheta->PDL::Math::floor));

What was interesting (at least to me) here is that adding '->sclr' to the
getatt does not make it so when putting into the next command when the
'->sclr' is removed from that line.  Further it appears 'floor' can only be
called this way but I don't see why when there is no CORE::floor, and I've
not loaded any other potential namespace conflicts.

Anyhow, this works, but it doesn't necessarily give me that peaceful easy
feeling.

Kind Regards,
Dan

On 26 September 2012 01:16, Doug Hunt <[email protected]> wrote:

> Hi Daniel:  I would make sure that the attributes $drng, $rngN and $dtheta
> are scalars:
>
> my $dtheta = $nc->getatt( 'seasonde_Angular_Resolution',
> sprintf('seasonde_Header_%s',**uc($self->{station_site})) )->sclr;
>
> --Doug
>
> [email protected]
> Software Engineer
> UCAR - COSMIC, Tel. (303) 497-2611
>
>
> On Tue, 25 Sep 2012, dpath2o wrote:
>
>  Hi,
>>
>> I've been chasing a new problem that appears to be somewhat sinister, but
>> could be relatively straight forward ... I'm turning
>> my wheels.
>>
>> Here's my code:
>>
>> 1   my $nc   = PDL::NetCDF->new( $ncfile );
>> 2   my $lon0 = $nc->getatt( 'seasonde_Origin_Longitude',
>> sprintf('seasonde_Header_%s',**uc($self->{station_site})) );
>> 3   my $lat0 = $nc->getatt( 'seasonde_Origin_Latitude' ,
>> sprintf('seasonde_Header_%s',**uc($self->{station_site})) );
>> 4   my $drng = $nc->getatt( 'seasonde_Range_Resolution',
>> sprintf('seasonde_Header_%s',**uc($self->{station_site})) );
>> 5   my $rngN = $nc->getatt( 'seasonde_Range_Limit',
>> sprintf('seasonde_Header_%s',**uc($self->{station_site})) ) * $drng;
>> 6   my $dtheta = $nc->getatt( 'seasonde_Angular_Resolution',
>> sprintf('seasonde_Header_%s',**uc($self->{station_site})) );
>> 7   #my $thetas_degrees = zeroes(360/$dtheta)->xlinvals(**
>> 0,(360-$dtheta));
>> 8   my $thetas_degrees = zeroes(360/5)->xlinvals(0,355)**;
>> 9   my $thetas = HFR::degrees2radians( $thetas_degrees );
>> 10  #my $rngs = zeroes($rngN/$drng)->xlinvals(**$drng,$rngN);
>> 11  my $rngs = zeroes(141237/3138.6)->xlinvals(3138.6,**141237);
>> 12  my @rngdims = $rngs->dims;
>> 13  my @thetadims = $thetas->dims;
>> 14  for (my $l1=0;$l1<$rngdims[0];$l1++) {
>> 15    for (my $l2=0;$l2<$thetadims[0];$l2++) {
>> 16      $lonG = $lonG->append( ($rngs($l1)*cos($thetas($l2)))**+$lon0 );
>> 17      $latG = $latG->append( ($rngs($l1)*sin($thetas($l2)))**+$lat0 );
>> 18    }
>> 19  }
>>
>> Here's the error message when lines 7 and 10 are uncommented and lines 8
>> and 11 are commented.
>>
>> $ncfile ='http://opendap-qcif.arcs.**org.au/thredds/dodsC/IMOS/**
>> ACORN/radial/CRVT/2011/09/01/**IMOS_ACORN_RV_**
>> 20110901T000000Z_CRVT_FV00_**radi<http://opendap-qcif.arcs.org.au/thredds/dodsC/IMOS/ACORN/radial/CRVT/2011/09/01/IMOS_ACORN_RV_20110901T000000Z_CRVT_FV00_radi>
>> al.nc'
>>
>> HFR::degrees2radians is very straightforward as the name implies
>>
>> The error message that I get is:
>>
>> Must have at least two elements in dimension for xlinvals at
>> /opt/local/lib/perl5/site_**perl/5.12.4/darwin-thread-**multi-2level/PDL/Basic.pm
>> line 245
>> PDL::xlinvals('PDL=SCALAR(**0x7fb13b7f4bb8)',
>> 'PDL=SCALAR(0x7fb13b7f4b40)', 'PDL=SCALAR(0x7fb13b7f4b70)') called at
>> /opt/local/lib/perl5/site_**perl/5.12.4/HFR/ACORN.pm line 368
>>
>> This implies that xlinvals is not getting the right input.  So when I
>> 'foce feed' xlinvals (as I've tested the code out on the
>> PDL command line and it works fine) it works fine too.  I'm stumped ...
>> any thoughts?  Could there be some conflict with PDL
>> operators and Perl operators?
>>
>> Here are the modules I've loaded into this package:
>> use 5.006;
>> use strict;
>> use warnings;
>> use Data::Dumper;
>> use Date::Parse;
>> use DateTime;
>> use Date::Calc qw ( :all );
>> use HFR;
>> use PDL;
>> use PDL::NiceSlice;
>> use PDL::Math;
>> use PDL::Char;
>> use PDL::NetCDF;
>> use PDL::Constants qw( PI );
>>
>> Cheers,
>> Dan
>>
>>
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to