[MITgcm-support] EXF

Martin Losch Martin.Losch at awi.de
Mon Dec 11 08:23:52 EST 2017


Hi Tsubasa,

so it was a compiler problem? That’s not unusual at all. In your build options file, you can set the following two flags: NOOPTFLAGS and NOOPTFILES. For example, in the default linux_amd64_ifort (in tools/build_options), they are set to

NOOPTFLAGS='-O0 -g'
NOOPTFILES=‘'

but you could set them in your optfile to
NOOPTFLAGS='-OXXX'
NOOPTFILES=‘exf_interpolation.f’
where XXX should be the optimization level that works for you (remember to regenerate the makefile: make makefile && make depend) before compilation.

Martin




> On 11. Dec 2017, at 13:53, 小平翼 <kodaira at edu.k.u-tokyo.ac.jp> wrote:
> 
> Hi Martin, 
> 
> I was also thinking about the compiler problem. I have used ifort based compiler for a HPC. When I changed to gcc, it worked without any problem. I visually confirmed the atmospheric forcing field is surely interpolated to model grids.
> 
> Many thanks for your help. 
> 
> I may also test several different compiler option for ifort and post if I find something helpful for MITgcm users. 
> 
> Best, 
> 
> Tsubasa
> 
> 2017-12-11 21:44 GMT+09:00 Martin Losch <Martin.Losch at awi.de>:
> Hi again,
> 
> I am not sure what’s happening. Can you try with compiler optimization turned off?
> 
> If that fails, maybe I can try to reproduce your problem if you send me your configuration (code and input directory, but without any big files, please, just the namelist files) maybe a short python script to generate your domain and your forcing fields (with constant values).
> 
> Martin
> 
> 
> > On 11. Dec 2017, at 11:33, 小平翼 <kodaira at edu.k.u-tokyo.ac.jp> wrote:
> >
> > Hello Martin,
> >
> > I highly appreciate your response. What I did so far are
> >       • Forcing the model with realistic 5km high resolution atmospheric forcing (MSM, Japan Meteorological Agency) with the on-the-fly interpolation ---> model blew up and noticed EXF monitor part shows strange value
> >       • Forcing the model with the model with only atmospheric temperature set to constant (300). The grid size of the input atmospheric data is the same as 1.
> >       • Checking the results with diagnostic package ---> When I visualized the output (atemp) , it seems (i) land mask working properly (ii) the figure doesn't show any organized pattern. so many unnatural stripes.
> >       • Going down to the codes: looking at exf_interp.F and exp_interpolate.F ---> I didn't fully understand the code yet, but I feel following part for the bilinear interpolation possibly increase the atemp value 4 times larger if LAGRAN external function return ones for some reason.
> >
> >            DO k=1,2
> >             ew_val(k) = arrayin(w_ind(i,j)  ,s_ind(i,j)+k-1)
> >      &                    *LAGRAN(1,xG(i,j,bi,bj),px_ind,sp)
> >      &                + arrayin(w_ind(i,j)+1,s_ind(i,j)+k-1)
> >      &                    *LAGRAN(2,xG(i,j,bi,bj),px_ind,sp)
> >             arrayout(i,j,bi,bj) = arrayout(i,j,bi,bj)
> >      &         + ew_val(k)*LAGRAN(k,yG(i,j,bi,bj),py_ind,sp)
> >            ENDDO
> > I should mention that I originally prepared interpolated atmospheric forcing file and run the model without on-the-fly function. It seemed to work as I wished. It however require a lot of time to interpolate the field using scipy.interpolate.griddata in python. This is why I wanted to use on-the-fly function.
> >
> > The reason why I used high-resolution atmospheric forcing is because I plan to use MITgcm for coastal short-time scale processes such as tides and surges with grid resolution about 1km. I have tried to automate creating input files for MITgcm to use the model with multiple study areas.
> >
> > Best,
> >
> > 2017-12-11 18:44 GMT+09:00 Martin Losch <Martin.Losch at awi.de>:
> > Hi Tsubasa,
> > I don’t see anything obviously wrong in your data.exf. I forgot to ask for the EXF_OPTIONS.h file, but I assume that you have set USE_EXF_INTERPOLATION, etc.
> >
> > This is what I would do:
> > write (all) your interpolated exf forcing fields to disk for your first timestep using the diagnostics package (i.e. data.diagnostics) and see if the patterns in the interpolated fields tell you something. If you haven’t used the diagnostics package yet, it’s a good time to learn how to use it.
> >
> > I find it very puzzling that your min/max temperatuers are exactly 600/1200. Do I understand you correctly, that you input field is constant at 300K?
> >
> > I have a principle question: your forcing data grid appears very fine (atemp_lon_inc = 0.0625). What is your model grid resolution, that you want such a high grid resolution for the forcing? Typically one would use the interpolation to interpolate from coarse forcing data grids to a high resolution model grid in order to avoid storing the forcing on the high resolution grid.
> >
> > Martin
> >
> > > On 11. Dec 2017, at 09:49, 小平翼 <kodaira at edu.k.u-tokyo.ac.jp> wrote:
> > >
> > > Hello Martin,
> > >
> > > I copied and pasted my data.exf below. The atmospheric temperature field (atemp) of my input file for EXF package  was intentionally set to 300 K for a test.  When I set the realistic temperature fields, the max/min values are similar (i.e., about 1200/600). The wind velocity is also strange, showing more than 100.
> > >
> > > Best,
> > >
> > > Tsubasa
> > >
> > >
> > > # *********************
> > > # External Forcing Data
> > > # *********************
> > >  &EXF_NML_01
> > > # useExfCheckRange  = .TRUE.,
> > >  useExfCheckRange  = .FALSE.,
> > > # readStressOnCgrid = .TRUE.,
> > >  repeatPeriod      = 0,
> > >  exf_iprec         = 64,
> > >  &
> > >
> > > # *********************
> > >  &EXF_NML_02
> > > #
> > > # hfluxstartdate1   = 20170901,
> > > # hfluxstartdate2   = 000000,
> > > # hfluxperiod       = 3600.0,
> > > #
> > > # sfluxstartdate1   = 20170901,
> > > # sfluxstartdate2   = 000000,
> > > # sfluxperiod       = 3600.0,
> > > #
> > > # ustressstartdate1 = 20170901,
> > > # ustressstartdate2 = 000000,
> > > # ustressperiod     = 3600.0,
> > > #
> > > # vstressstartdate1 = 20170901,
> > > # vstressstartdate2 = 000000,
> > > # vstressperiod     = 3600.0,
> > > #
> > >  atempstartdate1   = 20170901,
> > >  atempstartdate2   = 000000,
> > >  atempperiod       = 3600.0,
> > >
> > > # apressurestartdate1 =
> > > # apressurestartdate2 =
> > > # apressureperiod     =
> > >
> > >  aqhstartdate1     = 20170901,
> > >  aqhstartdate2     = 000000,
> > >  aqhperiod         = 3600.0,
> > > #
> > > #evapstartdate1    = 20170901,
> > > #evapstartdate2    = 000000,
> > > #evapperiod        = 3600.0,
> > > #
> > >  precipstartdate1  = 20170901,
> > >  precipstartdate2  = 000000,
> > >  precipperiod      = 3600.0,
> > > #
> > >  uwindstartdate1   = 20170901,
> > >  uwindstartdate2   = 000000,
> > >  uwindperiod       = 3600.0,
> > > #
> > >  vwindstartdate1   = 20170901,
> > >  vwindstartdate2   = 000000,
> > >  vwindperiod       = 3600.0,
> > > #
> > > # swfluxstartdate1  = 20170901,
> > > # swfluxstartdate2  = 000000,
> > > # swfluxperiod      = 3600.0,
> > > #
> > > # lwfluxstartdate1  = 20170901,
> > > # lwfluxstartdate2  = 000000,
> > > # lwfluxperiod      = 3600.0,
> > > #
> > >  swdownstartdate1  = 20170901,
> > >  swdownstartdate2  = 000000,
> > >  swdownperiod      = 86400.0,
> > > #
> > >  lwdownstartdate1  = 20170901,
> > >  lwdownstartdate2  = 000000,
> > >  lwdownperiod      = 86400.0,
> > > #
> > > # climsststartdate1  = 20170901,
> > > # climsststartdate2  = 000000,
> > > # climsstperiod      = 3600.0,
> > > # climsstTauRelax    = 0.0,
> > > #
> > > # climsssstartdate1  = 20170901,
> > > # climsssstartdate2  = 000000,
> > > # climsssperiod      = 3600.0,
> > > # climsssTauRelax    = 0.0,
> > > #
> > > # hfluxfile         = 'hsbc.bin',
> > >  hfluxfile         = ' ',
> > >  sfluxfile         = ' ',
> > >  ustressfile       = ' ',
> > >  vstressfile       = ' ',
> > >  atempfile         = './20170901/temp.surf',
> > >  aqhfile           = './20170901/rh.surf',
> > >  uwindfile         = './20170901/u.surf',
> > >  vwindfile         = './20170901/v.surf',
> > >  evapfile          = ' ',
> > > # apressurefile     = './20170901/psea.surf'
> > >  precipfile        = './20170901/r1h.surf',
> > >  lwfluxfile        = ' ',
> > >  swfluxfile        = ' ',
> > >  lwdownfile        = './20170901/dlwrf.surf',
> > >  swdownfile        = './20170901/dswrf.surf',
> > >  runoffFile        = ' '
> > >  climsstfile       = ' ',
> > >  climsssfile       = ' ',
> > > #
> > >  &
> > >
> > > # *********************
> > >  &EXF_NML_03
> > >  &
> > >
> > > # *********************
> > > # old open64 compiler (4.2.1) cannot skip this namelist to read in the next one;
> > > # comment out this namelist (not read).
> > >  &EXF_NML_04
> > >  atemp_lon0      = 124.0,
> > >  atemp_lon_inc   = 0.0625,
> > >  atemp_lat0      = 22.45,
> > >  atemp_lat_inc   = 400*0.05,
> > >  atemp_nlon      = 401,
> > >  atemp_nlat      = 401,
> > >  aqh_lon0      = 124.0,
> > >  aqh_lon_inc   = 0.0625,
> > >  aqh_lat0      = 22.45,
> > >  aqh_lat_inc   = 400*0.05,
> > >  aqh_nlon      = 401,
> > >  aqh_nlat      = 401,
> > >  precip_lon0      = 124.0,
> > >  precip_lon_inc   = 0.0625,
> > >  precip_lat0      = 22.45,
> > >  precip_lat_inc   = 400*0.05,
> > >  precip_nlon      = 401,
> > >  precip_nlat      = 401,
> > >  uwind_lon0      = 124.0,
> > >  uwind_lon_inc   = 0.0625,
> > >  uwind_lat0      = 22.45,
> > >  uwind_lat_inc   = 400*0.05,
> > >  uwind_nlon      = 401,
> > >  uwind_nlat      = 401,
> > >  vwind_lon0      = 124.0,
> > >  vwind_lon_inc   = 0.0625,
> > >  vwind_lat0      = 22.45,
> > >  vwind_lat_inc   = 400*0.05,
> > >  vwind_nlon      = 401,
> > >  vwind_nlat      = 401,
> > >  swdown_lon0      = 114.375,
> > >  swdown_lon_inc   = 1.875,
> > >  swdown_lat0      = 12.3808,
> > >  swdown_lat_inc   = 1.9047,
> > >  swdown_nlon      = 16,
> > >  swdown_nlat      = 14,
> > >  lwdown_lon0      = 114.375,
> > >  lwdown_lon_inc   = 1.875,
> > >  lwdown_lat0      = 12.3808,
> > >  lwdown_lat_inc   = 1.9047,
> > >  lwdown_nlon      = 16,
> > >  lwdown_nlat      = 14,
> > >  &
> > >
> > > # *********************
> > >  &EXF_NML_OBCS
> > >  obcsSstartdate1   = 20170901,
> > >  obcsSstartdate2   = 000000,
> > >  obcsSperiod       = 86400.0,
> > > #
> > >  obcsNstartdate1   = 20170901,
> > >  obcsNstartdate2   = 000000,
> > >  obcsNperiod       = 86400.0,
> > > #
> > >  obcsWstartdate1   = 20170901,
> > >  obcsWstartdate2   = 000000,
> > >  obcsWperiod       = 86400.0,
> > > #
> > >  obcsEstartdate1   = 20170901,
> > >  obcsEstartdate2   = 000000,
> > >  obcsEperiod       = 86400.0,
> > > #
> > > # siobSstartdate1   = 20170901,
> > > # siobSstartdate2   = 000000,
> > > # siobSperiod       = 86400.0,
> > > #
> > > # siobNstartdate1   = 20170901,
> > > # siobNstartdate2   = 000000,
> > > # siobNperiod       = 86400.0,
> > > #
> > > # siobWstartdate1   = 20170901,
> > > # siobWstartdate2   = 000000,
> > > # siobWperiod       = 86400.0,
> > >  &
> > >
> > >
> > >
> > > 2017-12-11 17:42 GMT+09:00 Martin Losch <Martin.Losch at awi.de>:
> > > Tsubasa,
> > >
> > > can you please provide your complete data.exf. Why would you have a min/max of 600/1200 K, what are the max/min of your input fields?
> > > this is probably not related to the interpolation but rather to either your input files rr the settings in data.exf.
> > >
> > > Martin
> > >
> > > > On 11. Dec 2017, at 04:32, 小平翼 <kodaira at edu.k.u-tokyo.ac.jp> wrote:
> > > >
> > > > Hello all,
> > > >
> > > > I was trying to use EXF package with the on-the-fly function. Unfortuntately, it didn't work as I expected. The values are set much larger.  As a quick check, I set the atmospheric temperature fields as constant, 300. The monitor function however shows that the maximum of atemp is 4times larger and the mean is also 2 times larger, as follows.
> > > >
> > > > (PID.TID 1000.0001) %MON exf_atemp_max                =   1.2000000000000E+03
> > > > (PID.TID 1000.0001) %MON exf_atemp_min                =   6.0000000000027E+02
> > > > (PID.TID 1000.0001) %MON exf_atemp_mean               =   9.1028890280222E+02
> > > > (PID.TID 1000.0001) %MON exf_atemp_sd                 =   1.7286119388930E+02
> > > > (PID.TID 1000.0001) %MON exf_atemp_del2               =   3.4626736833088E-01
> > > >
> > > > I'm wondering I may be missing something.
> > > > Any advice or help would be appreciated.
> > > > Related part of the data.exf is following
> > > >
> > > > &EXF_NML_04
> > > >  atemp_lon0      = 124.0,
> > > >  atemp_lon_inc   = 0.25,
> > > >  atemp_lat0      = 22.45,
> > > >  atemp_lat_inc   = 100*0.2,
> > > >  atemp_nlon      = 101,
> > > >  atemp_nlat      = 101,
> > > >
> > > > Thank you,
> > > >
> > > > Tsubasa
> > > > --
> > > >
> > > > _______________________________________________
> > > > MITgcm-support mailing list
> > > > 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
> > >
> > >
> > >
> > > --
> > > ///////////////////////////////////////////////////////////////////////////////////////////////////////
> > > 小平翼   助教、海洋技術環境学専攻、東大院新領域
> > > 居室 〒277-8563 千葉県柏市柏の葉5-1-5  環境棟 214
> > > Tsubasa Kodaira  (Ph.D),      Assistant Professor
> > > Department of Ocean Technology, Policy and Environment
> > > Graduate School of Frontier Sciences, The University of Tokyo
> > > TEL 04-7136-4672,     E-mail kodaira at edu.k.u-tokyo.ac.jp
> > > ///////////////////////////////////////////////////////////////////////////////////////////////////////
> > >
> > >
> > > _______________________________________________
> > > MITgcm-support mailing list
> > > 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
> >
> >
> >
> > --
> > ///////////////////////////////////////////////////////////////////////////////////////////////////////
> > 小平翼   助教、海洋技術環境学専攻、東大院新領域
> > 居室 〒277-8563 千葉県柏市柏の葉5-1-5  環境棟 214
> > Tsubasa Kodaira  (Ph.D),      Assistant Professor
> > Department of Ocean Technology, Policy and Environment
> > Graduate School of Frontier Sciences, The University of Tokyo
> > TEL 04-7136-4672,     E-mail kodaira at edu.k.u-tokyo.ac.jp
> > ///////////////////////////////////////////////////////////////////////////////////////////////////////
> >
> >
> > _______________________________________________
> > MITgcm-support mailing list
> > 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
> 
> 
> 
> -- 
> ///////////////////////////////////////////////////////////////////////////////////////////////////////
> 小平翼 	助教、海洋技術環境学専攻、東大院新領域
> 居室 〒277-8563 千葉県柏市柏の葉5-1-5  環境棟 214
> Tsubasa Kodaira  (Ph.D),	Assistant Professor
> Department of Ocean Technology, Policy and Environment
> Graduate School of Frontier Sciences, The University of Tokyo 
> TEL 04-7136-4672,	E-mail kodaira at edu.k.u-tokyo.ac.jp
> ///////////////////////////////////////////////////////////////////////////////////////////////////////
> 
> 
> _______________________________________________
> 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