diff --git a/examples/Makefile.am b/examples/Makefile.am index 6bc6ac5d8324a269d81988dde6f4ade54def44b1..735c4f22387c8a58c205cd04c86788a54a72b446 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -18,6 +18,7 @@ noinst_PROGRAMS = \ time_calculus \ uniq \ test_dace \ + test_dace_hl \ int_div_example endif ENABLE_EXAMPLES @@ -34,6 +35,7 @@ modulo_SOURCES = modulo.c recurrence_SOURCES = recurrence.c time_calculus_SOURCES = time_calculus.c test_dace_SOURCES = test_dace.f90 mo_event_manager.f90 +test_dace_hl_SOURCES = test_dace_hl.f90 int_div_example_SOURCES = int_div_example.c if FCMODUC @@ -75,7 +77,9 @@ repetitor.$(OBJEXT) \ simulate_iau.$(OBJEXT) \ tas.$(OBJEXT) \ uniq.$(OBJEXT) \ -test_dace.$(OBJEXT): $(top_builddir)/src/$(mtime_mod) +test_dace.$(OBJEXT) \ +test_dace_hl.$(OBJEXT): \ +$(top_builddir)/src/$(mtime_mod) example_hl.$(OBJEXT) \ iconoce_hl.$(OBJEXT) \ diff --git a/examples/Makefile.in b/examples/Makefile.in index 0bc0a3efeed0a2d6fac661fdbb7e7b648485b7d3..5a0456d5075fd02243333d785e59984977267161 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -88,7 +88,7 @@ host_triplet = @host@ @ENABLE_EXAMPLES_TRUE@ recurrence$(EXEEXT) repetitor$(EXEEXT) \ @ENABLE_EXAMPLES_TRUE@ simulate_iau$(EXEEXT) tas$(EXEEXT) \ @ENABLE_EXAMPLES_TRUE@ time_calculus$(EXEEXT) uniq$(EXEEXT) \ -@ENABLE_EXAMPLES_TRUE@ test_dace$(EXEEXT) \ +@ENABLE_EXAMPLES_TRUE@ test_dace$(EXEEXT) test_dace_hl$(EXEEXT) \ @ENABLE_EXAMPLES_TRUE@ int_div_example$(EXEEXT) subdir = examples DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ @@ -184,6 +184,10 @@ am_test_dace_OBJECTS = test_dace.$(OBJEXT) mo_event_manager.$(OBJEXT) test_dace_OBJECTS = $(am_test_dace_OBJECTS) test_dace_LDADD = $(LDADD) test_dace_DEPENDENCIES = $(top_builddir)/src/libmtime.la +am_test_dace_hl_OBJECTS = test_dace_hl.$(OBJEXT) +test_dace_hl_OBJECTS = $(am_test_dace_hl_OBJECTS) +test_dace_hl_LDADD = $(LDADD) +test_dace_hl_DEPENDENCIES = $(top_builddir)/src/libmtime.la am_time_calculus_OBJECTS = time_calculus.$(OBJEXT) time_calculus_OBJECTS = $(am_time_calculus_OBJECTS) time_calculus_LDADD = $(LDADD) @@ -247,14 +251,14 @@ SOURCES = callback_test.f90 comp_weights.f90 $(duration_SOURCES) \ $(model_integration_SOURCES) $(modulo_SOURCES) \ output_control.f90 $(recurrence_SOURCES) repetitor.f90 \ simulate_iau.f90 tas.f90 $(test_dace_SOURCES) \ - $(time_calculus_SOURCES) uniq.f90 + $(test_dace_hl_SOURCES) $(time_calculus_SOURCES) uniq.f90 DIST_SOURCES = callback_test.f90 comp_weights.f90 $(duration_SOURCES) \ example.f90 example_hl.f90 $(iconatm_SOURCES) \ $(iconoce_SOURCES) iconoce_hl.f90 $(int_div_example_SOURCES) \ $(model_integration_SOURCES) $(modulo_SOURCES) \ output_control.f90 $(recurrence_SOURCES) repetitor.f90 \ simulate_iau.f90 tas.f90 $(test_dace_SOURCES) \ - $(time_calculus_SOURCES) uniq.f90 + $(test_dace_hl_SOURCES) $(time_calculus_SOURCES) uniq.f90 am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -443,6 +447,7 @@ modulo_SOURCES = modulo.c recurrence_SOURCES = recurrence.c time_calculus_SOURCES = time_calculus.c test_dace_SOURCES = test_dace.f90 mo_event_manager.f90 +test_dace_hl_SOURCES = test_dace_hl.f90 int_div_example_SOURCES = int_div_example.c @FCMODUC_FALSE@mo_event_manager_mod = mo_event_manager.$(FCMODEXT) @FCMODUC_TRUE@mo_event_manager_mod = MO_EVENT_MANAGER.$(FCMODEXT) @@ -570,6 +575,10 @@ test_dace$(EXEEXT): $(test_dace_OBJECTS) $(test_dace_DEPENDENCIES) $(EXTRA_test_ @rm -f test_dace$(EXEEXT) $(AM_V_FCLD)$(FCLINK) $(test_dace_OBJECTS) $(test_dace_LDADD) $(LIBS) +test_dace_hl$(EXEEXT): $(test_dace_hl_OBJECTS) $(test_dace_hl_DEPENDENCIES) $(EXTRA_test_dace_hl_DEPENDENCIES) + @rm -f test_dace_hl$(EXEEXT) + $(AM_V_FCLD)$(FCLINK) $(test_dace_hl_OBJECTS) $(test_dace_hl_LDADD) $(LIBS) + time_calculus$(EXEEXT): $(time_calculus_OBJECTS) $(time_calculus_DEPENDENCIES) $(EXTRA_time_calculus_DEPENDENCIES) @rm -f time_calculus$(EXEEXT) $(AM_V_CCLD)$(LINK) $(time_calculus_OBJECTS) $(time_calculus_LDADD) $(LIBS) @@ -874,7 +883,9 @@ repetitor.$(OBJEXT) \ simulate_iau.$(OBJEXT) \ tas.$(OBJEXT) \ uniq.$(OBJEXT) \ -test_dace.$(OBJEXT): $(top_builddir)/src/$(mtime_mod) +test_dace.$(OBJEXT) \ +test_dace_hl.$(OBJEXT): \ +$(top_builddir)/src/$(mtime_mod) example_hl.$(OBJEXT) \ iconoce_hl.$(OBJEXT) \ diff --git a/examples/test_dace_hl.f90 b/examples/test_dace_hl.f90 new file mode 100644 index 0000000000000000000000000000000000000000..0de42d7462296d4c4b610e726f5c5af4856d7ebe --- /dev/null +++ b/examples/test_dace_hl.f90 @@ -0,0 +1,88 @@ +program test_mtime + USE mtime_hl + + call setCalendar(proleptic_gregorian) + call test1 () + call test2 () +contains + subroutine test1 () + TYPE(t_timedelta) :: dt, t0, t1, t2, t3 + + WRITE (0,*) "test1:" + dt = t_timedelta("PT24.000S") + t0 = t_timedelta("PT3600.000S") + t1 = t_timedelta("PT3600.000S") + t2 = t_timedelta("PT60M") + t3 = t_timedelta("PT1H") + t1 = t1 + dt + t2 = t2 + dt + t3 = t3 + dt + WRITE(0,*) " t0 : ", t0%toString(), "Reference" + WRITE(0,*) " dt : ", dt%toString(), "Modification" + WRITE(0,*) " t1 : ", t1%toString(), "???" + WRITE(0,*) " t2 : ", t2%toString(), "OK" + WRITE(0,*) " t3 : ", t3%toString(), "OK" + end subroutine test1 + !- + subroutine test2 () + TYPE(t_event) :: mec_Event + TYPE(t_datetime) :: mec_RefDate + TYPE(t_datetime) :: mec_StartDate + TYPE(t_datetime) :: mec_EndDate + TYPE(t_timedelta) :: mec_Start + TYPE(t_timedelta) :: mec_Stop + TYPE(t_timedelta) :: mec_Interval + TYPE(t_timedelta) :: time_step + type(t_eventGroup) :: mec_Events + integer :: ierr + logical :: lret + TYPE(t_datetime) :: mtime + integer :: i + + mec_Start = t_timeDelta("PT0S") + mec_Stop = t_timeDelta("PT3600S") + mec_Interval = t_timeDelta("PT300S") + + time_step = t_timeDelta("PT24S") + + mec_RefDate = t_datetime ("2016-05-29T00:00:00.000") + mec_StartDate = mec_RefDate + mec_EndDate = mec_RefDate + mec_StartDate = mec_StartDate + mec_Start + mec_EndDate = mec_EndDate + mec_Stop + + WRITE (0,*) + WRITE (0,*) "test2:" + WRITE (0,*) "Model time step : ", time_step%toString() + WRITE (0,*) "MEC start time : ", mec_Start%toString() + WRITE (0,*) "MEC stop time : ", mec_Stop%toString() + WRITE (0,*) "MEC interval : ", mec_Interval%toString() + WRITE (0,*) "MEC reference date: ", mec_RefDate%toString() + WRITE (0,*) "MEC start date : ", mec_StartDate%toString() + WRITE (0,*) "MEC end date : ", mec_EndDate%toString() + WRITE (0,*) + WRITE (0,*) "Checking event management" +! call initEventManager (mec_RefDate) + + mec_Events = t_eventGroup('mecEventGroup') + mec_Event = t_event('mec', mec_RefDate, mec_StartDate, mec_EndDate, mec_Interval) + + call mec_Events%append(mec_Event) + WRITE (0,*) "addEventToEventGroup returns:", lret +! CALL printEventGroup (mec_Events) + + mtime = mec_StartDate + i = 0 + do + if (mec_Event%isActive(mtime, plus_slack=time_step)) then + i = i + 1 + WRITE (0,*) "MEC will be called on: ", trim (mtime%toString()) + end if + IF (mtime >= mec_EndDate) THEN + exit + end IF + mtime = mtime + time_step + end do + write(0,*) "check_dace_timer: total MEC calls:", i, "(expected: 13)" + end subroutine test2 +end program test_mtime