Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
Méso-NH code
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
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
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RODIER Quentin
Méso-NH code
Commits
17701651
Commit
17701651
authored
1 year ago
by
WAUTELET Philippe
Browse files
Options
Downloads
Patches
Plain Diff
Philippe 12/04/2023: SURFEX: POSNAM: modernisation + improvements (taken from MesoNH mode_pos.f90)
parent
b6650a72
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/SURFEX/mode_pos_surf.F90
+41
-3
41 additions, 3 deletions
src/SURFEX/mode_pos_surf.F90
with
41 additions
and
3 deletions
src/SURFEX/mode_pos_surf.F90
+
41
−
3
View file @
17701651
!SFX_LIC Copyright 2001-20
19
CNRS, Meteo-France and Universite Paul Sabatier
!SFX_LIC Copyright 2001-20
23
CNRS, Meteo-France and Universite Paul Sabatier
!SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
!SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!SFX_LIC for details. version 1.
!SFX_LIC for details. version 1.
...
@@ -53,8 +53,13 @@ END INTERFACE
...
@@ -53,8 +53,13 @@ END INTERFACE
!! --------------
!! --------------
!! I. Mallet 15/10/01 adaptation to MesoNH (F90 norm)
!! I. Mallet 15/10/01 adaptation to MesoNH (F90 norm)
!! P. Wautelet 22/01/2019 use standard FLUSH statement instead of non standard intrinsics
!! P. Wautelet 22/01/2019 use standard FLUSH statement instead of non standard intrinsics
!! P. Wautelet 12/04/2023: POSNAM: modernisation + improvements (taken from MesoNH mode_pos.f90)
!------------------------------------------------------------------------------
!------------------------------------------------------------------------------
!
!
#ifdef SFX_MNH
USE
MODE_MSG
#endif
!
IMPLICIT
NONE
IMPLICIT
NONE
!
!
!* 0. DECLARATIONS
!* 0. DECLARATIONS
...
@@ -69,6 +74,7 @@ INTEGER, OPTIONAL,INTENT(IN) :: KLUOUT
...
@@ -69,6 +74,7 @@ INTEGER, OPTIONAL,INTENT(IN) :: KLUOUT
!
!
!* 0.2 Declarations of local variables
!* 0.2 Declarations of local variables
!
!
CHARACTER
(
LEN
=
100
)
::
YERRORMSG
CHARACTER
(
LEN
=
120
)
::
YLINE
CHARACTER
(
LEN
=
120
)
::
YLINE
CHARACTER
(
LEN
=
1
)
::
YLTEST
CHARACTER
(
LEN
=
1
)
::
YLTEST
INTEGER
::
ILEN
,
ILEY
,
INDL
,
IND1
,
IRET
INTEGER
::
ILEN
,
ILEY
,
INDL
,
IND1
,
IRET
...
@@ -92,22 +98,26 @@ ILEN=LEN(HDNAML)
...
@@ -92,22 +98,26 @@ ILEN=LEN(HDNAML)
DO
JFILE
=
1
,
2
DO
JFILE
=
1
,
2
search_nam
:
DO
search_nam
:
DO
YLINE
=
' '
YLINE
=
' '
READ
(
UNIT
=
KULNAM
,
FMT
=
'(A)'
,
IOSTAT
=
IRET
,
END
=
100
)
YLINE
READ
(
UNIT
=
KULNAM
,
FMT
=
'(A)'
,
IOSTAT
=
IRET
,
IOMSG
=
YERRORMSG
,
END
=
100
)
YLINE
! If file does not exist, most compilers would just create it and jump
! If file does not exist, most compilers would just create it and jump
! to the END label ; but a few of them would report an error:
! to the END label ; but a few of them would report an error:
IF
(
IRET
/
=
0
)
THEN
IF
(
IRET
/
=
0
)
THEN
#ifndef SFX_MNH
INQUIRE
(
KULNAM
,
OPENED
=
LLOPENED
)
INQUIRE
(
KULNAM
,
OPENED
=
LLOPENED
)
IF
(
LLOPENED
)
THEN
IF
(
LLOPENED
)
THEN
IF
(
PRESENT
(
KLUOUT
))
THEN
IF
(
PRESENT
(
KLUOUT
))
THEN
WRITE
(
KLUOUT
,
FMT
=*
)
'MODE_POS_SURF : error reading from unit '
,&
WRITE
(
KLUOUT
,
FMT
=*
)
'MODE_POS_SURF : error reading from unit '
,&
KULNAM
,
' file '
,
HDNAML
,
' line '
,
YLINE
KULNAM
,
' file '
,
HDNAML
,
' line '
,
YLINE
FLUSH
(
unit
=
KLUOUT
)
FLUSH
(
unit
=
KLUOUT
)
ENDIF
ENDIF
CALL
ABOR1_SFX
(
'MODE_POS_SURF: read error in namelist file'
)
CALL
ABOR1_SFX
(
'MODE_POS_SURF: read error in namelist file'
)
ELSE
ELSE
EXIT
search_nam
EXIT
search_nam
END
IF
END
IF
#else
call
Print_msg
(
NVERB_ERROR
,
'IO'
,
'POSNAM (SFX)'
,
Trim
(
HDNAML
)
//
': read error:'
//
Trim
(
YERRORMSG
)
)
#endif
ELSE
ELSE
! FIRST SEARCH for "&" IN THE LINE, THEN CORRECT LINE AND TEST :
! FIRST SEARCH for "&" IN THE LINE, THEN CORRECT LINE AND TEST :
INDL
=
INDEX
(
YLINE
,
'&'
)
INDL
=
INDEX
(
YLINE
,
'&'
)
...
@@ -120,12 +130,30 @@ DO JFILE=1,2
...
@@ -120,12 +130,30 @@ DO JFILE=1,2
END
DO
END
DO
IND1
=
INDEX
(
YLINE
,
'&'
//
HDNAML
)
IND1
=
INDEX
(
YLINE
,
'&'
//
HDNAML
)
IF
(
IND1
.NE.
0
)
THEN
IF
(
IND1
.NE.
0
)
THEN
IF
(
IND1
>
1
)
THEN
IF
(
LEN_TRIM
(
YLINE
(:
IND1
-1
)
)
/
=
0
)
THEN
! Check that it is really the beginning of a namelist and that is not a comment
! Nothing but spaces is allowed here
#ifdef SFX_MNH
call
Print_msg
(
NVERB_DEBUG
,
'IO'
,
'POSNAM (SFX)'
,
'invalid header or commented namelist: '
//
Trim
(
YLINE
)
)
#endif
CYCLE
END
IF
END
IF
YLTEST
=
YLINE
(
IND1
+
ILEN
+1
:
IND1
+
ILEN
+1
)
YLTEST
=
YLINE
(
IND1
+
ILEN
+1
:
IND1
+
ILEN
+1
)
IF
(
YLTEST
==
' '
)
THEN
IF
(
YLTEST
==
' '
)
THEN
! NAMELIST FOUND : RETURN
! NAMELIST FOUND : RETURN
BACKSPACE
(
KULNAM
)
BACKSPACE
(
KULNAM
)
OFOUND
=
.TRUE.
OFOUND
=
.TRUE.
#ifndef SFX_MNH
IF
(
PRESENT
(
KLUOUT
))
WRITE
(
KLUOUT
,
FMT
=*
)
'-- namelist '
,
HDNAML
,
' read'
IF
(
PRESENT
(
KLUOUT
))
WRITE
(
KLUOUT
,
FMT
=*
)
'-- namelist '
,
HDNAML
,
' read'
#else
IF
(
PRESENT
(
KLUOUT
)
)
THEN
call
Print_msg
(
NVERB_INFO
,
'IO'
,
'POSNAM (SFX)'
,
'namelist '
//
Trim
(
HDNAML
)
//
' found'
)
ELSE
call
Print_msg
(
NVERB_DEBUG
,
'IO'
,
'POSNAM (SFX)'
,
'namelist '
//
Trim
(
HDNAML
)
//
' found'
)
END
IF
#endif
IF
(
LHOOK
)
CALL
DR_HOOK
(
'MODE_POS_SURF:POSNAM'
,
1
,
ZHOOK_HANDLE
)
IF
(
LHOOK
)
CALL
DR_HOOK
(
'MODE_POS_SURF:POSNAM'
,
1
,
ZHOOK_HANDLE
)
RETURN
RETURN
ENDIF
ENDIF
...
@@ -139,9 +167,19 @@ ENDDO
...
@@ -139,9 +167,19 @@ ENDDO
BACKSPACE
(
KULNAM
)
BACKSPACE
(
KULNAM
)
! end of file: namelist name not found
! end of file: namelist name not found
#ifndef SFX_MNH
IF
(
PRESENT
(
KLUOUT
))
&
IF
(
PRESENT
(
KLUOUT
))
&
WRITE
(
KLUOUT
,
FMT
=*
)
&
WRITE
(
KLUOUT
,
FMT
=*
)
&
'-- namelist '
,
HDNAML
,
' not found: default values used if required'
'-- namelist '
,
HDNAML
,
' not found: default values used if required'
#else
IF
(
PRESENT
(
KLUOUT
)
)
THEN
call
Print_msg
(
NVERB_INFO
,
'IO'
,
'POSNAM (SFX)'
,
'namelist '
//
Trim
(
HDNAML
)
&
//
' not found: default values used if required'
)
ELSE
call
Print_msg
(
NVERB_DEBUG
,
'IO'
,
'POSNAM (SFX)'
,
'namelist '
//
Trim
(
HDNAML
)
&
//
' not found: default values used if required'
)
END
IF
#endif
IF
(
LHOOK
)
CALL
DR_HOOK
(
'MODE_POS_SURF:POSNAM'
,
1
,
ZHOOK_HANDLE
)
IF
(
LHOOK
)
CALL
DR_HOOK
(
'MODE_POS_SURF:POSNAM'
,
1
,
ZHOOK_HANDLE
)
!------------------------------------------------------------------
!------------------------------------------------------------------
END
SUBROUTINE
POSNAM
END
SUBROUTINE
POSNAM
...
...
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