diff --git a/src/Makevars b/src/Makevars index 8cd4b1a4..626695cf 100755 --- a/src/Makevars +++ b/src/Makevars @@ -15,8 +15,6 @@ $(SHLIB): $(FT_OBJS) $(C_OBJS) sofun_r.o: interface_biosphere_pmodel.mod.o interface_biosphere_biomee.mod.o params_core.mod.o params_core.mod.o params_soil_biomee.mod.o params_siml_pmodel.mod.o params_siml_biomee.mod.o interface_biosphere_pmodel.mod.o: forcing_siterun_pmodel.mod.o params_siml_pmodel.mod.o params_core.mod.o interface_biosphere_biomee.mod.o: forcing_siterun_biomee.mod.o params_soil_biomee.mod.o params_siml_biomee.mod.o params_core.mod.o -params_siml_pmodel.mod.o: params_core.mod.o -params_siml_biomee.mod.o: params_core.mod.o forcing_siterun_pmodel.mod.o: params_core.mod.o params_siml_pmodel.mod.o grid_siterun.mod.o sofunutils.mod.o forcing_siterun_biomee.mod.o: params_core.mod.o params_siml_biomee.mod.o grid_siterun.mod.o params_soil_biomee.mod.o: params_core.mod.o @@ -33,13 +31,14 @@ biosphere_biomee.mod.o: params_core.mod.o interface_biosphere_biomee.mod.o datat soil_biomee.mod.o: datatypes.mod.o vegetation_biomee.mod.o: datatypes.mod.o soil_biomee.mod.o gpp_biomee.mod.o datatypes.mod.o: interface_biosphere_biomee.mod.o params_core.mod.o classdefs.mod.o +sofunutils.mod.o: params_core.mod.o # Source (object) of Fortran modules # : sofun_r_mod.mod: sofun_r.o +md_params_core.mod: params_core.mod.o md_params_siml_pmodel.mod: params_siml_pmodel.mod.o md_params_siml_biomee.mod: params_siml_biomee.mod.o -md_params_core.mod: params_core.mod.o md_forcing_pmodel.mod: forcing_siterun_pmodel.mod.o md_forcing_biomee.mod: forcing_siterun_biomee.mod.o md_params_soil_biomee.mod: params_soil_biomee.mod.o diff --git a/src/forcing_siterun_biomee.mod.f90 b/src/forcing_siterun_biomee.mod.f90 index 719e7bdf..435efa34 100644 --- a/src/forcing_siterun_biomee.mod.f90 +++ b/src/forcing_siterun_biomee.mod.f90 @@ -39,7 +39,6 @@ function getclimate( nt, ntstepsyear, forcing, climateyear_idx ) result ( out_cl ! arguments integer, intent(in) :: nt ! number of time steps integer, intent(in) :: ntstepsyear ! number of time steps per year of model - ! integer, intent(in) :: ntstepsyear_forcing ! number of time steps per year of forcing data real(kind=dp), dimension(nt,13), intent(in) :: forcing ! array containing all temporally varying forcing data (rows: time steps; columns: 1=air temperature, 2=rainfall, 3=vpd, 4=ppfd, 5=net radiation, 6=sunshine fraction, 7=snowfall, 8=co2, 9=N-deposition) integer, intent(in) :: climateyear_idx ! logical, intent(in) :: do_agg_climate @@ -51,9 +50,6 @@ function getclimate( nt, ntstepsyear, forcing, climateyear_idx ) result ( out_cl ! function return variable type(climate_type), dimension(ntstepsyear) :: out_climate - ! !print*,'ntstepsyear', ntstepsyear - ! !print*,'ntstepsyear_forcing', ntstepsyear_forcing - idx_start = (climateyear_idx - 1) * ntstepsyear + 1 idx_end = idx_start + ntstepsyear - 1 diff --git a/src/params_siml_biomee.mod.f90 b/src/params_siml_biomee.mod.f90 index 269919e0..38a18000 100644 --- a/src/params_siml_biomee.mod.f90 +++ b/src/params_siml_biomee.mod.f90 @@ -58,8 +58,6 @@ function getsteering( year, params_siml ) result( out_steering ) ! simulation year (setting booleans for opening files, doing ! spinup etc.) !---------------------------------------------------------------- - use md_params_core, only: dummy - ! arguments integer, intent(in) :: year ! simulation year, starts counting from 1, starting at the beginning of spinup type( paramstype_siml ), intent(in) :: params_siml diff --git a/src/params_siml_pmodel.mod.f90 b/src/params_siml_pmodel.mod.f90 index bf3efee5..1afc4aac 100644 --- a/src/params_siml_pmodel.mod.f90 +++ b/src/params_siml_pmodel.mod.f90 @@ -69,8 +69,6 @@ function getsteering( year, params_siml ) result( out_steering ) ! simulation year (setting booleans for opening files, doing ! spinup etc.) !---------------------------------------------------------------- - use md_params_core, only: dummy - ! arguments integer, intent(in) :: year ! simulation year, starts counting from 1, starting at the beginning of spinup type( paramstype_siml ), intent(in) :: params_siml @@ -110,12 +108,6 @@ function getsteering( year, params_siml ) result( out_steering ) out_steering%forcingyear = year - params_siml%spinupyears + params_siml%firstyeartrend - 1 out_steering%forcingyear_idx = year - params_siml%spinupyears - ! if (params_siml%const_clim_year/=int(dummy)) then - ! ! constant climate year specified - ! cycleyear = get_cycleyear( year, params_siml%spinupyears, params_siml%recycle ) - ! out_steering%climateyear = cycleyear + params_siml%const_clim_year - 1 - ! out_steering%climateyear_idx = cycleyear + params_siml%const_clim_year - params_siml%firstyeartrend - ! else ! constant climate year not specified out_steering%climateyear = out_steering%forcingyear diff --git a/src/photosynth_pmodel.mod.f90 b/src/photosynth_pmodel.mod.f90 index eefe346b..46a0e05d 100644 --- a/src/photosynth_pmodel.mod.f90 +++ b/src/photosynth_pmodel.mod.f90 @@ -5,7 +5,7 @@ module md_photosynth ! (gpp_biomee_pmodel, and gpp_pmodel) use it and interact with different ! model structures. !------------------------------------------------------------------------ - use md_params_core, only: kPo, c_molmass, dummy, eps + use md_params_core implicit none @@ -921,8 +921,6 @@ function calc_ftemp_inst_vcmax( tcleaf, tcgrowth, tcref ) result( fv ) ! ! Ref: Wang Han et al. (in prep.) !----------------------------------------------------------------------- - use md_params_core, only: kR ! Universal gas constant, J/mol/K - ! arguments real, intent(in) :: tcleaf real, intent(in) :: tcgrowth @@ -973,8 +971,6 @@ function calc_ftemp_inst_jmax( tcleaf, tcgrowth, tcref ) result( fv ) ! photosynthesis: a reanalysis of data from 36 species, Plant, Cell and Environment, ! 30,1176–1190, 2007. !----------------------------------------------------------------------- - use md_params_core, only: kR ! Universal gas constant, J/mol/K - ! arguments real, intent(in) :: tcleaf real, intent(in) :: tcgrowth @@ -1021,8 +1017,6 @@ function calc_ftemp_arrhenius( tk, dha, tkref ) result( ftemp ) ! ! T_ref is 25 deg C (=298.13 K) per default. !----------------------------------------------------------------------- - use md_params_core, only: kR ! Universal gas constant, J/mol/K - ! arguments real, intent(in) :: tk ! temperature (Kelvin) real, intent(in) :: dha ! activation energy (J/mol) diff --git a/src/sofunutils.mod.f90 b/src/sofunutils.mod.f90 index 36cf038a..4a8f2e39 100644 --- a/src/sofunutils.mod.f90 +++ b/src/sofunutils.mod.f90 @@ -2,6 +2,8 @@ module md_sofunutils !///////////////////////////////////////////////////////////////////////// ! Contains various utility functions !------------------------------------------------------------------------- + use md_params_core + implicit none contains @@ -89,8 +91,6 @@ end function running ! !///////////////////////////////////////////////////////////////////////// ! ! Returns monthly values as a mean over daily values in each month. ! !------------------------------------------------------------------------- - ! use md_params_core, only: ndaymonth, cumdaymonth, ndayyear, nmonth - ! ! arguments ! real, intent(in), dimension(ndayyear) :: dval ! vector containing 365 (366 in case lapyear is TRUE) daily values ! character(len=*), intent(in) :: method ! true of monthly values represent total of daily values in resp. month @@ -125,8 +125,6 @@ end function running ! ! Distributes monthly total precipitation to days, given number of ! ! monthly wet days. Adopted from LPX. ! !-------------------------------------------------------------------- - ! use md_params_core, only: nmonth, ndayyear, ndaymonth - ! ! arguments ! real, dimension(nmonth), intent(in) :: mval_prec ! monthly precipitation totals ! real, dimension(nmonth) :: mval_wet ! monthly number of wet days @@ -274,8 +272,6 @@ end function running ! !///////////////////////////////////////////////////////////////////////// ! ! Returns daily values based on monthly values, using a defined method. ! !------------------------------------------------------------------------- - ! use md_params_core, only: middaymonth, ndayyear, ndaymonth, nmonth - ! ! arguments ! real, dimension(nmonth), intent(in) :: mval ! vector containing 12 monthly values ! character(len=*), intent(in) :: method @@ -459,7 +455,6 @@ end function running ! ! Function reads a file that contains 365 lines, each line for ! ! a daily value. ! !---------------------------------------------------------------- - ! use md_params_core, only: ndayyear ! implicit none ! ! arguments @@ -490,7 +485,6 @@ end function running ! ! Function reads a file that contains 12 lines, each line for ! ! a daily value. ! !---------------------------------------------------------------- - ! use md_params_core, only: nmonth ! implicit none ! ! arguments @@ -516,423 +510,10 @@ end function running ! end function read1year_monthly - ! function getvalreal( filename, realyear, day ) result( valreal ) - ! !//////////////////////////////////////////////////////////////// - ! ! Function reads one (annual) value corresponding to the given - ! ! year from a time series ascii file. - ! !---------------------------------------------------------------- - ! use md_params_core, only: ndayyear - - ! ! arguments - ! character(len=*), intent(in) :: filename - ! integer, intent(in) :: realyear - ! integer, intent(in), optional :: day ! day in year (1:365) - ! ! integer, intent(in), optional :: dm ! day in month (1:31) - ! ! integer, intent(in), optional :: mo ! month in year (1:12) - - ! ! function return value - ! real :: valreal - - ! ! local variables - ! integer :: l - ! real :: tmp(3) ! 3 so that an additional value for this year could be read - ! real :: realyear_decimal - - ! if (present(day)) then - ! ! convert day number into decimal number - ! realyear_decimal = real(realyear) + real(day)/real(ndayyear) - ! endif - - ! open(20, file='./input/'//filename, status='old', form='formatted', err=888) - - ! if (present(day)) then - ! ! find corresponding day in first column and read 3 values on this line - ! read(20, 100, err=999) (tmp(l), l=1,3) - ! do while (abs(realyear_decimal-tmp(1))>1.0d-8) - ! read(20, 100, err=999) (tmp(l), l=1,3) - ! enddo - - ! else - ! ! find corresponding year in first column and read 3 values on this line - ! read(20, 100, err=999) (tmp(l), l=1,3) - ! do while (abs(realyear-tmp(1))>1.0d-8) - ! read(20, 100, err=999) (tmp(l), l=1,3) - ! enddo - - ! endif - - ! valreal = tmp(2) - - ! 100 format (30d16.8) - ! close(20) - - ! return - - ! 888 write(0,*) 'GETVALREAL: error opening file '//trim(filename)//'. Abort. ' - ! stop - ! 999 write(0,*) 'GETVALREAL: error reading file '//trim(filename)//'. Abort. ' - ! stop - - ! end function getvalreal - - - ! function getvalreal_STANDARD( filename, realyear, mo, dm, day, realyear_decimal ) result( valreal ) - ! !//////////////////////////////////////////////////////////////// - ! ! Reads one (annual) value corresponding to the given year - ! ! from a time series ascii file. File has to be located in - ! ! ./input/ and has to contain only rows formatted like - ! ! '2002 1 1 0.496632 0.054053', which represents - ! ! 'YYYY MM DM GPP GPP err.'. DM is the day within the month. - ! ! If 'realyear' is dummy (-9999), then it's interpreted as to - ! ! represent a mean climatology for the course of a year. - ! ! XXX THIS IS NOT IN USE IN SOFUN ANYMORE XXX - ! !---------------------------------------------------------------- - ! ! arguments - ! character(len=*), intent(in) :: filename - ! integer, intent(in), optional :: realyear ! year AD as integer - ! integer, intent(in), optional :: mo ! month in year (1:12) - ! integer, intent(in), optional :: dm ! day in month (1:31 or 1:31 or 1:28) - ! integer, intent(in), optional :: day ! day in year (1:365) - ! real, intent(in), optional :: realyear_decimal ! year AD as decimal number corresponding to day in the year - - ! ! function return value - ! real :: valreal - - ! ! local variables - ! integer :: inyear - ! integer :: inmo - ! integer :: indm - ! integer :: inday - ! real :: inyear_decimal - ! real :: inval1 - ! real :: inval2 - - ! !print*,'looking for realyear, mo, dm',realyear,mo,dm - - ! ! open file - ! open(20, file='./input/'//filename, status='old', form='formatted', err=888) - - ! if (present(realyear)) then - ! ! DATA FOR EACH YEAR - ! if (present(mo)) then - ! ! DATA FOR EACH MONTH - ! if (present(dm)) then - ! ! DATA FOR EACH DAY IN THE MONTH - ! ! read the 2 values for this day in this year - ! read(20, 100, err=999) inyear, inmo, indm, inval1, inval2 - ! do while ( (realyear-inyear).ne.0 .or. (mo-inmo).ne.0 .or. (dm-indm).ne.0 ) - ! read(20, 100, err=999) inyear, inmo, indm, inval1, inval2 - ! enddo - ! else - ! ! read the 2 values for this month in this year - ! read(20, 200, err=999) inyear, inmo, inval1, inval2 - ! do while ( (realyear-inyear).ne.0 .or. (mo-inmo).ne.0 ) - ! read(20, 200, err=999) inyear, inmo, inval1, inval2 - ! enddo - ! end if - ! else if (present(day)) then - ! ! DATA FOR EACH DAY IN THE YEAR - ! ! read the 2 values for this day in this year - ! read(20, 700, err=999) inyear, inday, inval1, inval2 - ! do while ( (realyear-inyear).ne.0 .or. (day-inday).ne.0 ) - ! read(20, 700, err=999) inyear, inday, inval1, inval2 - ! enddo - ! else - ! ! read the 2 values for this year - ! read(20, 300, err=999) inyear, inval1, inval2 - ! do while ( (realyear-inyear).ne.0 ) - ! read(20, 300, err=999) inyear, inval1, inval2 - ! enddo - ! end if - ! else if (present(realyear_decimal)) then - ! ! DATA PROVIDED FOR EACH DAY AS A DECIMAL OF REALYEAR - ! ! find corresponding day in first column and read 3 values on this line - ! read(20, 900, err=999) inyear_decimal, inval1, inval2 - ! do while (abs(realyear_decimal-inyear_decimal).gt.1.0d-8) - ! read(20, 900, err=999) inyear_decimal, inval1, inval2 - ! enddo - ! else - ! ! DATA AS AVERAGE OVER MULTIPLE YEARS (recycle climatology) - ! ! FOR EACH MONTH, AND DAY-IN-THE-MONTH - ! if (present(mo)) then - ! if (present(dm)) then - ! ! read the 2 values for this day - ! read(20, 400, err=999) inmo, indm, inval1, inval2 - ! !print*,'inmo, indm, inval1, inval2', inmo, indm, inval1, inval2 - ! do while ( (mo-inmo).ne.0 .or. (dm-indm).ne.0 ) - ! read(20, 400, err=999) inmo, indm, inval1, inval2 - ! !print*,'inmo, indm, inval1, inval2', inmo, indm, inval1, inval2 - ! enddo - ! else - ! ! read the 2 values for this month - ! read(20, 500, err=999) inmo, inval1, inval2 - ! do while ( (mo-inmo).ne.0 ) - ! read(20, 500, err=999) inmo, inval1, inval2 - ! enddo - - ! end if - ! else if (present(day)) then - ! ! DATA FOR EACH DAY IN THE YEAR - ! ! read the 2 values for this day - ! read(20, 800, err=999) inday, inval1, inval2 - ! do while ( (day-inday).ne.0 ) - ! read(20, 800, err=999) inday, inval1, inval2 - ! enddo - ! else - ! ! read the 2 values in this input file - ! read(20, 600, err=999) inval1, inval2 - ! end if - ! endif - - ! !print*,'found realyear, mo, dm ',inyear,inmo,indm,inval1 - - ! valreal = inval1 - - ! 100 format (I4,I3,I3,F10.7,F10.7) - ! 200 format (I4,I3,F10.7,F10.7) - ! 300 format (I4,F10.7,F10.7) - ! 400 format (I3,I3,F10.7,F10.7) - ! 500 format (I3,F10.7,F10.7) - ! 600 format (F10.7,F10.7) - ! 700 format (I4,I4,F10.7,F10.7) - ! 800 format (I4,F10.7,F10.7) - ! 900 format (30d16.8,F10.7,F10.7) - - ! close(20) - - ! return - - ! 888 write(0,*) 'GETVALREAL_STANDARD: error opening file '//trim(filename)//'. Abort. ' - ! stop - ! 999 write(0,*) 'GETVALREAL_STANDARD: error reading file '//trim(filename)//'. Abort. ' - ! stop - - ! end function getvalreal_STANDARD - - - ! function getparreal( filename, paraname, try ) result( paravalue ) - ! !//////////////////////////////////////////////////////////////// - ! ! Low-level function for reading real parameter value from text file. - ! !---------------------------------------------------------------- - ! use md_params_core, only: dummy - - ! ! arguments - ! character(len=*), intent(in) :: filename, paraname - ! logical, intent(in), optional :: try - - ! ! function return value - ! real :: paravalue - - ! ! local variables - ! integer :: filehandle - ! character(len=40) :: readname, readvalue - - ! filehandle = 111 - ! open(filehandle,status='old',err=19,file=filename) - ! 9 read(filehandle,12,end=10)readname,readvalue - ! if (trim(readname)==paraname) then - ! read(readvalue,*) paravalue - ! goto 11 - ! else - ! goto 9 - ! endif - ! 10 continue - - ! if (present(try)) then - ! if (try) then - ! paravalue = dummy - ! end if - ! else - ! write(0,*) 'getparreal: '//paraname//' of type real not found' - ! stop - ! end if - - ! 11 continue - ! 12 format(2a40) - - ! close(filehandle) - - ! ! print*,'reading real value for ', paraname, ': ', paravalue - - ! return - - ! 19 write(0,*) 'getparreal: '//filename//' not found!' - ! stop - - ! end function getparreal - - - ! function getparint( filename, paraname ) result( paravalue ) - ! !//////////////////////////////////////////////////////////////// - ! ! Low-level function for reading integer parameter value from text file - ! !---------------------------------------------------------------- - ! ! arguments - ! character(len=*), intent(in) :: filename, paraname - - ! ! function return variable - ! integer :: paravalue - - ! ! local variables - ! integer :: filehandle - ! character(len=40) :: readname, readvalue - - ! filehandle = 111 - ! open(filehandle,status='old',err=19,file=filename) - ! 9 read(filehandle,12,end=10)readname,readvalue - ! if (trim(readname)==paraname) then - ! read(readvalue,*) paravalue - ! goto 11 - ! else - ! goto 9 - ! endif - ! 10 continue - ! write(0,*) 'getparint: in file '//filename//':' - ! write(0,*) 'getparint: '//paraname//' of type integer not found' - ! stop - - ! 11 continue - ! 12 format(2a40) - - ! close(filehandle) - - ! ! print*,'reading integer for ', paraname, ': ', paravalue - - ! return - - ! 19 write(0,*) 'getparint: file '//filename//' not found:' - ! write(0,*) filename - ! stop - - ! end function getparint - - - ! function getparlogical( filename, paraname ) result( paravalue ) - ! !//////////////////////////////////////////////////////////////// - ! ! Low-level function for reading boolean parameter value from text file - ! !---------------------------------------------------------------- - ! ! arguments - ! character(len=*), intent(in) :: filename, paraname - ! ! function return variable - ! logical :: paravalue - - ! ! local variables - ! integer :: filehandle - ! character(len=40) :: readname, readvalue - - ! filehandle = 111 - ! open(filehandle,status='old',err=19,file=filename) - ! 9 read(filehandle,12,end=10)readname,readvalue - ! if (trim(readname)==paraname) then - ! read(readvalue,*) paravalue - ! goto 11 - ! else - ! goto 9 - ! endif - ! 10 continue - ! write(0,*) 'GETPARLOGICAL: '//paraname//' of type logical not found' - ! stop - - ! 11 continue - ! 12 format(2a40) - - ! close(filehandle) - - ! ! print*,'reading logical for ', paraname, ': ', paravalue - - ! return - - ! 19 write(0,*) 'GETPARLOGICAL: '//filename//' not found!' - ! stop - - ! end function getparlogical - - - ! subroutine getparstring( filename, paraname, paravalue ) - ! !//////////////////////////////////////////////////////////////// - ! ! Low-level function for reading parameter value (string) from text file - ! !---------------------------------------------------------------- - ! character(len=*), intent(in) :: filename, paraname - ! character(len=*) :: paravalue - - ! integer :: filehandle,i - ! character(len=40) :: readname - ! character(len=1024) :: readvalue - - ! filehandle = 111 - ! open(filehandle,status='old',err=19,file=filename) - ! 9 read(filehandle,12,end=10)readname,readvalue - ! if (trim(readname)==paraname) then - ! ! Strip leading and trailing whitespace from readvalue - ! i=1 - ! do while (readvalue(i:i)==' ' .and. i.lt.len(readvalue)) - ! i=i+1 - ! enddo - ! paravalue = trim(readvalue(i:)) - ! goto 11 - ! else - ! goto 9 - ! endif - ! 10 continue - ! write(0,*) 'GETSTRING: '//paraname//' of type string not found' - ! stop - - ! 11 continue - ! 12 format(a40,a) - - ! close(filehandle) - - ! print*, 'reading string for ', paraname, ': ', paravalue - - ! return - - ! 19 write(0,*) 'GETSTRING: '//filename//' not found!' - ! stop - - ! end subroutine getparstring - - - ! function getparchar( filename, paraname ) result( paravalue ) - ! !//////////////////////////////////////////////////////////////// - ! ! Low-level function for reading parameter value from text file - ! !---------------------------------------------------------------- - ! character(len=*), intent(in) :: filename, paraname - ! character(len=1) :: paravalue - - ! integer :: filehandle - ! character(len=40) :: readname, readvalue - - ! filehandle = 111 - ! open(filehandle,status='old',err=19,file=filename) - ! 9 read(filehandle,12,end=10)readname,readvalue - ! if (trim(readname)==paraname) then - ! read(readvalue,*) paravalue - ! goto 11 - ! else - ! goto 9 - ! endif - ! 10 continue - ! write(0,*) 'getparchar: '//paraname//' of type char not found' - ! stop - - ! 11 continue - ! 12 format(2a40) - - ! close(filehandle) - - ! return - - ! 19 write(0,*) 'getparchar: '//filename//' not found!' - ! stop - - ! end function getparchar - - function area( lat, dx, dy ) result( out_area ) !//////////////////////////////////////////////////////////////// ! Calculates grid cell area in m2 on a spherical Earth !---------------------------------------------------------------- - use md_params_core, only: pi - ! arguments real, intent(in) :: lat ! latitude (degrees N) real, intent(in) :: dx ! resolution in longitude (degrees) @@ -956,8 +537,6 @@ function calc_patm( elv ) result( patm ) ! Ref: Allen et al. (1998) ! This function is copied from SPLASH !---------------------------------------------------------------- - use md_params_core, only: kPo, kL, kTo, kG, kMa, kR - ! arguments real, intent(in) :: elv ! elevation above sea level, m @@ -1090,8 +669,6 @@ function dgcos( x ) result( dgcos_out ) ! Calculates the cosine of an angle given in degrees. Equal to ! 'dsin' in Python version. !---------------------------------------------------------------- - use md_params_core, only: pi - ! arguments real, intent(in) :: x ! angle, degrees (0-360) @@ -1109,8 +686,6 @@ function dgsin( x ) result( dgsin_out ) ! Calculates the sinus of an angle given in degrees. Equal to ! 'dsin' in Python version. !---------------------------------------------------------------- - use md_params_core, only: pi - ! arguments real, intent(in) :: x ! angle, degrees (0-360) @@ -1127,8 +702,6 @@ function degrees( x ) result( degrees_out ) !---------------------------------------------------------------- ! Returns corresponding degrees if x is given in radians !---------------------------------------------------------------- - use md_params_core, only: pi - ! arguments real, intent(in) :: x ! angle, radians @@ -1144,8 +717,6 @@ function radians( x ) result( radians_out ) !---------------------------------------------------------------- ! Returns corresponding radians if x is given in degrees !---------------------------------------------------------------- - use md_params_core, only: pi - ! arguments real, intent(in) :: x ! angle, radians