Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • gwu479/Summa-Actors
  • numerical_simulations_lab/actors/Summa-Actors
2 results
Show changes
Showing
with 4127 additions and 2250 deletions
This diff is collapsed.
This diff is collapsed.
......@@ -4,44 +4,44 @@
! for the HRUs to read from
module access_forcing_module
USE, intrinsic :: iso_c_binding
USE nrtype
USE data_types,only:file_info
USE data_types,only:file_info_array
USE data_types,only:dlength ! global data structure for forcing data
USE data_types,only:ilength ! global data structure for forcing data
USE actor_data_types,only:file_info_array
USE actor_data_types,only:var_forc ! global data structure for forcing data
USE globalData,only:gru_struc
USE globalData,only:forcingDataStruct
USE globalData,only:vecTime
USE globalData,only:outputStructure
USE globalData,only:time_meta,forc_meta ! metadata structures
USE globalData,only:integerMissing ! integer missing value
USE var_lookup,only:iLookTIME,iLookFORCE ! named variables to define structure elements
USE summaActors_FileManager,only:FORCING_PATH ! path of the forcing data file
USE summaFileManager,only:FORCING_PATH ! path of the forcing data file
USE netcdf_util_module,only:nc_file_close ! close netcdf file
implicit none
private
public::access_forcingFile
public::read_forcingFile
contains
type(var_forc),allocatable,save,public :: forcingDataStruct(:) ! forcingDataStruct(:)%var(:)%dataFromFile(:,:)
type(dlength),allocatable,save,public :: vecTime(:)
subroutine access_forcingFile(forcFileInfo, iFile, stepsInFile, startGRU, numGRU, err, message)
contains
subroutine read_forcingFile(handle_forcFileInfo, iFile, stepsInFile, startGRU, numGRU, err) bind(C,name="read_forcingFile")
USE netcdf ! netcdf capability
USE netcdf_util_module,only:nc_file_open ! open netcdf file
implicit none
type(file_info_array),intent(inout) :: forcFileInfo
integer(i4b),intent(in) :: iFile
integer(i4b),intent(inout) :: stepsInFile
integer(i4b),intent(in) :: startGRU
integer(i4b),intent(in) :: numGRU
integer(i4b),intent(inout) :: err
character(*),intent(out) :: message
type(c_ptr), intent(in), value :: handle_forcFileInfo
integer(c_int),intent(in) :: iFile
integer(c_int),intent(inout) :: stepsInFile
integer(c_int),intent(in) :: startGRU
integer(c_int),intent(in) :: numGRU
integer(c_int),intent(inout) :: err
! local varibles
type(file_info_array), pointer :: forcFileInfo
integer(i4b) :: iHRU_Global
integer(i4b) :: varId
integer(i4b) :: ncid
......@@ -56,9 +56,12 @@ subroutine access_forcingFile(forcFileInfo, iFile, stepsInFile, startGRU, numGRU
character(len=256) :: cmessage
character(len = nf90_max_name) :: varName ! dimenison name
logical(lgt),dimension(size(forc_meta)) :: checkForce ! flags to check forcing data variables exist
character(len=256) :: message ! error message
call c_f_pointer(handle_forcFileInfo, forcFileInfo)
! Start Procedure here
err=0; message="access_forcing/"
err=0; message="read_force.f90 - read_forcingFile/"
nFiles=size(forcFileInfo%ffile_list(:))
......@@ -72,7 +75,6 @@ subroutine access_forcingFile(forcFileInfo, iFile, stepsInFile, startGRU, numGRU
endif
! Files are assumed to be in the correct order
! do iFile=1,nFiles
infile=trim(FORCING_PATH)//trim(forcFileInfo%ffile_list(iFile)%filenmData)
! open netCDF file
call openForcingFile(forcFileInfo%ffile_list,iFile,trim(infile),ncid,err,cmessage)
......@@ -144,7 +146,7 @@ subroutine access_forcingFile(forcFileInfo, iFile, stepsInFile, startGRU, numGRU
if(err/=0)then;message=trim(message)//trim(cmessage);return;end if
end subroutine access_forcingFile
end subroutine read_forcingFile
! *************************************************************************
! * open the NetCDF forcing file and get the time information
......@@ -154,13 +156,13 @@ subroutine openForcingFile(forcFileInfo,iFile,infile,ncId,err,message)
USE netcdf_util_module,only:nc_file_open ! open netcdf file
USE time_utils_module,only:fracDay ! compute fractional day
USE time_utils_module,only:extractTime ! extract time info from units string
USE time_utils_module,only:compJulday ! convert calendar date to julian day
USE time_utils_module,only:compJulDay ! convert calendar date to julian day
!USE globalData,only:tmZoneOffsetFracDay ! time zone offset in fractional days
USE globalData,only:ncTime ! time zone information from NetCDF file (timeOffset = longitude/15. - ncTimeOffset)
USE globalData,only:utcTime ! all times in UTC (timeOffset = longitude/15. hours)
USE globalData,only:localTime ! all times local (timeOffset = 0)
USE globalData,only:refJulday_data
USE summaActors_filemanager,only:NC_TIME_ZONE
USE globalData,only:refJulDay_data
USE summafilemanager,only:NC_TIME_ZONE
! dummy variables
type(file_info),intent(inout) :: forcFileInfo(:)
integer(i4b),intent(in) :: iFile ! index of current forcing file in forcing file list
......@@ -208,7 +210,7 @@ subroutine openForcingFile(forcFileInfo,iFile,infile,ncId,err,message)
end select ! (option time zone option)
call compjulday(iyyy,im,id,ih,imin,dsec, & ! output = year, month, day, hour, minute, second
refJulday_data,err,cmessage) ! output = julian day (fraction of day) + error control
refJulDay_data,err,cmessage) ! output = julian day (fraction of day) + error control
if(err/=0)then; message=trim(message)//trim(cmessage); return; end if
! get the time multiplier needed to convert time to units of days
......
character(len=64), parameter :: summaVersion = ''
character(len=64), parameter :: buildTime = ''
character(len=64), parameter :: gitBranch = ''
character(len=64), parameter :: gitHash = ''
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.