Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
libmtime
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
icon-libraries
libmtime
Commits
a0ce60d1
Commit
a0ce60d1
authored
5 years ago
by
Florian Prill
Committed by
Luis Kornblueh
5 years ago
Browse files
Options
Downloads
Patches
Plain Diff
added missing USE.
parent
78f93ea8
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
examples/iconoce.f90
+154
-0
154 additions, 0 deletions
examples/iconoce.f90
examples/output_control.f90
+1
-0
1 addition, 0 deletions
examples/output_control.f90
with
155 additions
and
0 deletions
examples/iconoce.f90
+
154
−
0
View file @
a0ce60d1
module
mo_event_manager
use
mtime
USE
mtime_error_handling
implicit
none
private
public
::
initEventManager
public
::
getModelReferenceDate
public
::
addEventGroup
public
::
getEventGroup
public
::
printEventGroup
public
::
getEventComponents
type
event_group_list
type
(
eventgroup
),
pointer
::
group
end
type
event_group_list
type
(
event_group_list
),
allocatable
::
model_event_groups
(:)
integer
::
model_event_groups_list_member
integer
::
model_event_groups_list_size
=
16
type
(
datetime
),
pointer
::
model_reference_date
=>
null
()
logical
::
linitialized
=
.false.
contains
subroutine
initEventManager
(
referenceDate
)
type
(
datetime
),
pointer
,
intent
(
in
)
::
referenceDate
model_reference_date
=>
newDatetime
(
referenceDate
)
allocate
(
model_event_groups
(
model_event_groups_list_size
))
model_event_groups_list_member
=
0
linitialized
=
.true.
end
subroutine
initEventManager
function
getModelReferenceDate
()
result
(
r
)
type
(
datetime
),
pointer
::
r
r
=>
null
()
if
(
linitialized
)
then
r
=>
model_reference_date
endif
end
function
getModelReferenceDate
function
addEventGroup
(
group
)
result
(
handle
)
integer
::
handle
character
(
len
=*
),
intent
(
in
)
::
group
type
(
event_group_list
),
allocatable
::
tmp
(:)
character
(
len
=
max_groupname_str_len
)
::
gstring
if
(
.not.
linitialized
)
then
print
*
,
'ERROR: event manager not initialized.'
stop
endif
if
(
model_event_groups_list_member
==
model_event_groups_list_size
)
then
print
*
,
'INFO: reallocating event group list.'
allocate
(
tmp
(
model_event_groups_list_size
))
tmp
(:)
=
model_event_groups
(:)
deallocate
(
model_event_groups
)
allocate
(
model_event_groups
(
2
*
model_event_groups_list_size
))
model_event_groups
(:
model_event_groups_list_size
)
=
tmp
(:)
deallocate
(
tmp
)
model_event_groups_list_size
=
2
*
model_event_groups_list_size
print
*
,
'INFO: new evcent group list size: '
,
model_event_groups_list_size
endif
model_event_groups_list_member
=
model_event_groups_list_member
+
1
model_event_groups
(
model_event_groups_list_member
)
%
group
=>
newEventGroup
(
trim
(
group
))
call
getEventGroupName
(
model_event_groups
(
model_event_groups_list_member
)
%
group
,
gstring
)
print
*
,
'INFO: Added event group: '
,
trim
(
gstring
)
handle
=
model_event_groups_list_member
end
function
addEventGroup
function
getEventGroup
(
handle
)
result
(
eventGroupListMember
)
type
(
eventGroup
),
pointer
::
eventGroupListMember
integer
,
intent
(
in
)
::
handle
if
(
handle
>
model_event_groups_list_member
)
then
eventGroupListMember
=>
null
()
else
eventGroupListMember
=>
model_event_groups
(
handle
)
%
group
endif
end
function
getEventGroup
subroutine
printEventGroup
(
handle
)
integer
,
intent
(
in
)
::
handle
type
(
eventGroup
),
pointer
::
currentEventGroup
type
(
event
),
pointer
::
currentEvent
character
(
len
=
max_eventname_str_len
)
::
estring
character
(
len
=
max_groupname_str_len
)
::
egstring
currentEventGroup
=>
getEventGroup
(
handle
)
call
getEventGroupName
(
currentEventGroup
,
egstring
)
currentEvent
=>
getFirstEventFromEventGroup
(
model_event_groups
(
handle
)
%
group
)
print
*
,
'Event list: '
,
trim
(
egstring
)
do
while
(
associated
(
currentEvent
))
call
eventToString
(
currentEvent
,
estring
)
print
*
,
' event '
,
trim
(
estring
)
currentEvent
=>
getNextEventFromEventGroup
(
currentEvent
)
enddo
end
subroutine
printEventGroup
subroutine
getEventComponents
(
eventString
,
referenceDate
,
timeInterval
,
startDate
,
endDate
)
character
(
len
=
max_repetition_str_len
),
intent
(
in
)
::
eventString
type
(
datetime
),
pointer
::
referenceDate
type
(
timedelta
),
pointer
::
timeInterval
type
(
datetime
),
pointer
::
startDate
type
(
datetime
),
pointer
::
endDate
character
(
len
=
max_repetition_str_len
)
::
r
,
s
,
e
,
d
logical
::
lr
,
ls
,
le
,
ld
call
splitRepetitionString
(
eventString
,
r
,
s
,
e
,
d
,
lr
,
ls
,
le
,
ld
)
if
(
lr
)
then
if
(
getRepetitions
(
r
)
/
=
-1
)
then
print
*
,
'WARNING: event setup should not have explicit repeat count.'
endif
endif
if
(
ls
)
then
startDate
=>
newDatetime
(
trim
(
s
))
endif
if
(
le
)
then
endDate
=>
newDatetime
(
trim
(
e
))
endif
if
(
ld
)
then
timeInterval
=>
newTimeDelta
(
trim
(
d
))
else
print
*
,
'ERROR: time interval should be given.'
stop
endif
end
subroutine
getEventComponents
end
module
mo_event_manager
!__________________________________________________________________________________________________
!
program
iconoce
use
mtime
...
...
This diff is collapsed.
Click to expand it.
examples/output_control.f90
+
1
−
0
View file @
a0ce60d1
program
output_control
use
mtime
USE
mtime_error_handling
implicit
none
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment