Skip to main content

Example 03 — Mask Data with Timing

Reads cattle density and state boundary data, applies a mask, and measures execution time for each step.

Source Code

program main
use fpl
implicit none

type(nc3d_double_lld_ti) :: cattle
type(nc2d_byte_lld) :: maskara

real*4 :: start_time, end_time
character(200) :: inputpath, outputpath, maskfile

inputpath = "database/CATTLE19902012.nc"
maskfile = "database/brazil_UF.nc"
outputpath = "database/cattle19902012_mask.nc"

cattle%varname = "Cattle"
cattle%timename = "time"
cattle%lonname = "lon"
cattle%latname = "lat"

maskara%varname = "UF"
maskara%lonname = "lon"
maskara%latname = "lat"

write(*,*) "Readind data"
call exec_time(start_time)
call readgrid(maskfile, maskara)
call exec_time(end_time)
write(*,'(" Time:", f15.3," seconds")') end_time - start_time

write(*,*) "vartype: ", maskara%vartype

write(*,*) "Reading mask"
call exec_time(start_time)
call readgrid(inputpath, cattle)
call exec_time(end_time)
write(*,'(" Time:", f15.3," seconds")') end_time - start_time

write(*,*) "cattle vartype: ", cattle%vartype

write(*,*) "Setting FillValue"
call exec_time(start_time)
call setFillValue(maskara, cattle, 18)
call exec_time(end_time)
write(*,'(" Time:", f15.3," seconds")') end_time - start_time

write(*,*) "Writing data"
call exec_time(start_time)
call writegrid(outputpath, cattle)
call exec_time(end_time)
write(*,'(" Time:", f15.3," seconds")') end_time - start_time

call dealloc(cattle)
call dealloc(maskara)
end program main

Compile & Run

gfortran -o ex3.out ex3_time.f90 -I/usr/lib64/gfortran/modules/ -lFPL
./ex3.out

Output

Example 03 result