[MITgcm-support] Barotropic ocean gyre tutorial

Oliver Jahn jahn at mit.edu
Sun Apr 4 06:48:24 EDT 2021


Hi Jeremy,

this will not work:

> if sys.byteorder == 'little': tau_2.byteswap(True)
> fid = open('windx_siny.bin', 'wb')
> tau_2.astype('float32').tofile(fid)

Can you instead try Jeff's suggestion:

tau_2.astype('>f4').tofile('windx_siny.bin')

and NOT use the byteswap command?  Mixing byteswap and astype is a bad
idea as byteswap will create a mismatch between the data in memory and
numpy's assumption of the data type.

Best,
Oliver


> as you suggested, the plot still came out blank.
> Regarding Jeffrey Scott's comment that the reason I could not read back
> the bin file was due to a mismatch between float32 and float64, I
> followed his advice and read in the
> bin file using the snippet 
> 
> tau_2_1 = np.fromfile('windx_siny.bin',dtype='float32')
> 
> and I got back an array with every entry being 'inf' except the
> penultimate column, being all '0'.
> 
> Is it possible that the snippet 
> 
> # X=X.astype('float128')
> # Y=Y.astype('float128')
> 
> (which is commented) needs to be included but with 'float128' replaced
> with 'float32'?
> 
> Best
> Jeremy
> 
> 
> 
> 
> 
> On Thu, 1 Apr 2021 at 16:47, Jan Klaus Rieck <jan.rieck at mail.mcgill.ca
> <mailto:jan.rieck at mail.mcgill.ca>> wrote:
> 
>     Hello Jeremy Miller,
> 
>     I also use python to to generate input data for the MITgcm. I found
>     that, to generate files that can be read by the MITgcm consistently,
>     I needed to specify the type explicitly. 
>     My way of saving the files would look like this in your case: 
> 
>     if sys.byteorder == 'little': tau_2.byteswap(True)
>     fid = open(''windx_siny.bin', 'wb')
>     tau_2.astype('float32').tofile(fid)
> 
>     Of course, 'float32' could be replaced by 'float64' if you require
>     double precision.
> 
>     I hope this helps,
>     Jan Rieck
>      
>     On Thu, 2021-04-01 at 10:22 +0300, Jeremy Miller wrote:
>>     Dear MITGCM forum,
>>
>>     I am Jeremy Miller, I am new to MITgcm and I've been going through
>>     the tutorials. I have a question about the "Barotropic Ocean Gyre"
>>     tutorial (section 4.1).
>>
>>     I managed to compile and run the code, and re-produce the first
>>     two plots shown in section 4.1.5 for  wind stress of τ = τ0 cos(
>>     πy/Ly), for both the advection and non-advection cases (with the
>>     provided input binary files). 
>>     I ran into problems when trying to produce the third plot, for the
>>     case where τ = τ0 sin( πy/Ly). I am a python user, so I translated
>>     gendata.m into python to write the input binary
>>     files 'windx_cosy.bin' 'windx_siny.bin' (see the file
>>     gendata_tut4.1py attached).  As explained in section 3.9 I've
>>     included the snippet 
>>
>>     if sys.byteorder == 'little': tau_2.byteswap(True)
>>
>>     where "tau2" is the array to be output. There was no issue in the
>>     cosine wind stress, and I managed to reproduce the results that I
>>     got with the original 'windx_cosy.bin' provided in the tutorial.
>>     However, with the sine wind stress case, the output in
>>     'Eta.0000077760.001.001' is all zeros. 
>>
>>     When I attempt to read  'windx_siny.bin' with python into a new
>>     array called tau2_1. I get absurdly big numbers back, which do not
>>     match the original array tau2 that I created. If I Remove the
>>     snippet " if sys.byteorder == 'little': tau_2.byteswap(True) ", in
>>     the python gendata code, tau2_1 and tau2 match. But, then when I
>>     run the code again, the file output.txt contains a long list of NaNs.
>>
>>     I have also included the python code used to generate the plots in
>>     the file tut_4.1_plots.py <http://tut_4.1_plots.py/>
>>
>>     Look forward to hearing from you.
>>     Yours sincerely
>>     Jeremy Miller
>>     _______________________________________________
>>     MITgcm-support mailing list
>>     MITgcm-support at mitgcm.org
>>     <mailto:MITgcm-support at mitgcm.org>
>>
>>     http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
>>
>     _______________________________________________
>     MITgcm-support mailing list
>     MITgcm-support at mitgcm.org <mailto:MITgcm-support at mitgcm.org>
>     http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
> 
> 
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mailman.mitgcm.org/mailman/listinfo/mitgcm-support
> 


More information about the MITgcm-support mailing list