metno / emep-ctm

Open Source EMEP/MSC-W model
GNU General Public License v3.0
30 stars 20 forks source link

Small bugs that cause errors for gortran compiler #38

Closed rosagierens closed 5 years ago

rosagierens commented 6 years ago

Using the gfortran compiler (version 6.2.0) I run into the following (tiny) errors:

  1. Met_ml.f90 line 3117 if(met(ix)%found == .false.) then fixed by using .eqv. instead of ==

  2. EmisDef_ml.f90 lines 104-107 integer, save, dimension(NSECTORS_SNAP,3) ::snap2gnfr= (/1,3,2,4,13,5,6,7,10,11,-1 & ,-1,-1,-1,-1,-1,-1,-1,8,-1,12,-1 & ,-1,-1,-1,-1,-1,-1,-1,9,-1,-1,-1 & /) from the dimensions given I thought this could be integer, save, dimension(NSECTORS_SNAP,3) ::snap2gnfr= reshape( (/1,3,2,4,13,5,6,7,10,11,-1 & ,-1,-1,-1,-1,-1,-1,-1,8,-1,12,-1 & ,-1,-1,-1,-1,-1,-1,-1,9,-1,-1,-1 & /), & (/NSECTORS_SNAP,3/) )

  3. CellMet_ml.f90 line 212 if(z0_out_ix) d_2d(z0_out_ix,i,j,IOU_INST) = & line 221 if(z0_out_ix) d_2d(z0_out_ix,i,j,IOU_INST) = & from the context I'm guessing if(z0_out_ix>0)

  4. ColumnSource_ml.f90 lines 172-173 NAMELIST /ColumnSource_config/& NMAX_LOC,NMAX_EMS,flocdef,femsdef,need_topo appears outside the definition block of the subroutine, needed to move these two lines before the if(.not.foundtopo) [...] end if -block

avaldebe commented 6 years ago

@gitpeterwind the first 3 point son this issue seem to be right on your wheelhouse. Can you check if this are present on the dev code? I'll have a look on the 4th one and report back.

avaldebe commented 6 years ago

@rosagierens

I looked over the code on our reserach/develoment code and the issue in point 4 is no longer present. So this should not give you problems on our next relsease.

gitpeterwind commented 6 years ago

I think all the four points had already been corrected in the latest dev. For the second point the solution used was:

integer, save, dimension(NSECTORS_SNAP,3), public ::snap2gnfr=reshape([1,3,2,4,13,5,6,7,10,11,-1 & ,-1,-1,-1,-1,-1,-1,-1,8,-1,12,-1 & ,-1,-1,-1,-1,-1,-1,-1,9,-1,-1,-1 & ],shape(snap2gnfr))

But I think it is also gfortran compatible

avaldebe commented 6 years ago

@gitpeterwind I had a look at the fix for the 1st point

if(met(ix)%found .eqv. .false.) then

and think that it is more complicated than needs to be. The following is also easier to read, and consistent the rest of the module

if(.not.met(ix)%found) then

If you agree, I can edit that line on our research/dev branch

rosagierens commented 6 years ago

@gitpeterwind I tried your solution with both gfortran and the cray fortran compiler and had no issues compiling.

gitpeterwind commented 6 years ago

Thanks for the feedback Rosa!

avaldebe commented 6 years ago

@gitpeterwind you did not answered my question about .eqv. false vs .not., so I guess you do not care. I'll update the reserach/dev branch. Please revert my change if you do not agree.

@rosagierens Thanks for the bug reports and the feedback on our fixes. We'll keep this issue open until the next version is released.

gitpeterwind commented 6 years ago

Yes,

 if(.not.met(ix)%found) then

is better!

martinsaliba commented 5 years ago

From #49. Although the files CellMet_ml.f90 and ColumnSource_ml.f90 were updated as explained above, I still got an error:

mpif90 -ffree-line-length-none -fdefault-real-8 -O3 -I/cm/shared/apps/netcdf/gcc/64/4.4.0/mpi/include -c CM_ChemRates_ml.f90
CM_ChemRates_ml.f90:137.32:

       rct(68,:) = 1450000000000*exp(-10688*TINV)
                                1
Error: Integer too big for its kind at (1). This check can be disabled with the option -fno-range-check
make: *** [CM_ChemRates_ml.o] Error 1

Can somebody check whether I have placed the requested changes in the ColumnSource file correct as described in the attached screen CellMet_line221 ColumnSource

shot?

avaldebe commented 5 years ago

Hi @martinsaliba

As you are now focusing on rv4_17, you can use the source code in our repository. On the last commit to the source branch (d60dd09) implemented all the fixes. The following command will retrieve the code from the source branch and put it on a new directory (emep-ctm/)

git clone -b source --single-branch git@github.com:metno/emep-ctm.git
avaldebe commented 5 years ago

Hi again,

you can check your own changes against the ones on the repository, see d60dd09 for details.

avaldebe commented 5 years ago

Can somebody check whether I have placed the requested changes in the ColumnSource file correct

Looks fine to me.

avaldebe commented 5 years ago

As far as I can tell, this issues were addressed before rv4_32.