Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
sfx
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
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
inmcm-mirror
sfx
Commits
e428de69
Commit
e428de69
authored
9 months ago
by
数学の武士
Browse files
Options
Downloads
Patches
Plain Diff
Remove pointers
parent
1262b184
No related branches found
No related tags found
No related merge requests found
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
CMakeLists.txt
+2
-2
2 additions, 2 deletions
CMakeLists.txt
srcF/sfx_data.f90
+6
-31
6 additions, 31 deletions
srcF/sfx_data.f90
srcF/sfx_esm.f90
+7
-7
7 additions, 7 deletions
srcF/sfx_esm.f90
srcF/sfx_sheba.f90
+6
-5
6 additions, 5 deletions
srcF/sfx_sheba.f90
with
21 additions
and
45 deletions
CMakeLists.txt
+
2
−
2
View file @
e428de69
This diff is collapsed.
Click to expand it.
srcF/sfx_data.f90
+
6
−
31
View file @
e428de69
...
@@ -40,21 +40,12 @@ module sfx_data
...
@@ -40,21 +40,12 @@ module sfx_data
!> @brief meteorological input for surface flux calculation
!> @brief meteorological input for surface flux calculation
!> &details using arrays as input
!> &details using arrays as input
type
,
public
::
meteoDataVecType
type
,
public
::
meteoDataVecType
#if defined(INCLUDE_CXX)
real
,
pointer
,
contiguous
::
h
(:)
!< constant flux layer height [m]
real
,
pointer
,
contiguous
::
U
(:)
!< abs(wind speed) at 'h' [m/s]
real
,
pointer
,
contiguous
::
dT
(:)
!< difference between potential temperature at 'h' and at surface [K]
real
,
pointer
,
contiguous
::
Tsemi
(:)
!< semi-sum of potential temperature at 'h' and at surface [K]
real
,
pointer
,
contiguous
::
dQ
(:)
!< difference between humidity at 'h' and at surface [g/g]
real
,
pointer
,
contiguous
::
z0_m
(:)
!< surface aerodynamic roughness (should be < 0 for water bodies surface)
#else
real
,
allocatable
::
h
(:)
!< constant flux layer height [m]
real
,
allocatable
::
h
(:)
!< constant flux layer height [m]
real
,
allocatable
::
U
(:)
!< abs(wind speed) at 'h' [m/s]
real
,
allocatable
::
U
(:)
!< abs(wind speed) at 'h' [m/s]
real
,
allocatable
::
dT
(:)
!< difference between potential temperature at 'h' and at surface [K]
real
,
allocatable
::
dT
(:)
!< difference between potential temperature at 'h' and at surface [K]
real
,
allocatable
::
Tsemi
(:)
!< semi-sum of potential temperature at 'h' and at surface [K]
real
,
allocatable
::
Tsemi
(:)
!< semi-sum of potential temperature at 'h' and at surface [K]
real
,
allocatable
::
dQ
(:)
!< difference between humidity at 'h' and at surface [g/g]
real
,
allocatable
::
dQ
(:)
!< difference between humidity at 'h' and at surface [g/g]
real
,
allocatable
::
z0_m
(:)
!< surface aerodynamic roughness (should be < 0 for water bodies surface)
real
,
allocatable
::
z0_m
(:)
!< surface aerodynamic roughness (should be < 0 for water bodies surface)
#endif
end
type
end
type
#if defined(INCLUDE_CXX)
#if defined(INCLUDE_CXX)
...
@@ -90,19 +81,7 @@ module sfx_data
...
@@ -90,19 +81,7 @@ module sfx_data
!> @brief surface flux output data
!> @brief surface flux output data
!> &details using arrays as output
!> &details using arrays as output
type
,
public
::
sfxDataVecType
type
,
public
::
sfxDataVecType
#if defined(INCLUDE_CXX)
real
,
pointer
,
contiguous
::
zeta
(:)
!< = z/L [n/d]
real
,
pointer
,
contiguous
::
Rib
(:)
!< bulk Richardson number [n/d]
real
,
pointer
,
contiguous
::
Re
(:)
!< Reynolds number [n/d]
real
,
pointer
,
contiguous
::
B
(:)
!< = log(z0_m / z0_h) [n/d]
real
,
pointer
,
contiguous
::
z0_m
(:)
!< aerodynamic roughness [m]
real
,
pointer
,
contiguous
::
z0_t
(:)
!< thermal roughness [m]
real
,
pointer
,
contiguous
::
Rib_conv_lim
(:)
!< Ri-bulk convection critical value [n/d]
real
,
pointer
,
contiguous
::
Cm
(:)
!< transfer coefficient for momentum [n/d]
real
,
pointer
,
contiguous
::
Ct
(:)
!< transfer coefficient for heat [n/d]
real
,
pointer
,
contiguous
::
Km
(:)
!< eddy viscosity coeff. at h [m^2/s]
real
,
pointer
,
contiguous
::
Pr_t_inv
(:)
!< inverse turbulent Prandtl number at h [n/d]
#else
real
,
allocatable
::
zeta
(:)
!< = z/L [n/d]
real
,
allocatable
::
zeta
(:)
!< = z/L [n/d]
real
,
allocatable
::
Rib
(:)
!< bulk Richardson number [n/d]
real
,
allocatable
::
Rib
(:)
!< bulk Richardson number [n/d]
real
,
allocatable
::
Re
(:)
!< Reynolds number [n/d]
real
,
allocatable
::
Re
(:)
!< Reynolds number [n/d]
...
@@ -114,7 +93,7 @@ module sfx_data
...
@@ -114,7 +93,7 @@ module sfx_data
real
,
allocatable
::
Ct
(:)
!< transfer coefficient for heat [n/d]
real
,
allocatable
::
Ct
(:)
!< transfer coefficient for heat [n/d]
real
,
allocatable
::
Km
(:)
!< eddy viscosity coeff. at h [m^2/s]
real
,
allocatable
::
Km
(:)
!< eddy viscosity coeff. at h [m^2/s]
real
,
allocatable
::
Pr_t_inv
(:)
!< inverse turbulent Prandtl number at h [n/d]
real
,
allocatable
::
Pr_t_inv
(:)
!< inverse turbulent Prandtl number at h [n/d]
#endif
end
type
end
type
#if defined(INCLUDE_CXX)
#if defined(INCLUDE_CXX)
...
@@ -222,10 +201,8 @@ contains
...
@@ -222,10 +201,8 @@ contains
subroutine
set_meteo_vec_c
(
meteo
,
meteo_C
)
subroutine
set_meteo_vec_c
(
meteo
,
meteo_C
)
!> @brief allocate meteo data vector
!> @brief allocate meteo data vector
! ----------------------------------------------------------------------------
! ----------------------------------------------------------------------------
type
(
meteoDataVecType
)
,
intent
(
in
)
::
meteo
type
(
meteoDataVecType
),
target
::
meteo
type
(
meteoDataVecTypeC
),
pointer
,
intent
(
inout
)
::
meteo_C
type
(
meteoDataVecTypeC
),
intent
(
inout
)
::
meteo_C
allocate
(
meteo_C
)
meteo_C
%
h
=
c_loc
(
meteo
%
h
)
meteo_C
%
h
=
c_loc
(
meteo
%
h
)
meteo_C
%
U
=
c_loc
(
meteo
%
U
)
meteo_C
%
U
=
c_loc
(
meteo
%
U
)
...
@@ -281,10 +258,8 @@ contains
...
@@ -281,10 +258,8 @@ contains
subroutine
set_sfx_vec_c
(
sfx
,
sfx_C
)
subroutine
set_sfx_vec_c
(
sfx
,
sfx_C
)
!> @brief allocate surface fluxes data vector
!> @brief allocate surface fluxes data vector
! ----------------------------------------------------------------------------
! ----------------------------------------------------------------------------
type
(
sfxDataVecType
),
intent
(
inout
)
::
sfx
type
(
sfxDataVecType
),
target
::
sfx
type
(
sfxDataVecTypeC
),
pointer
,
intent
(
inout
)
::
sfx_C
type
(
sfxDataVecTypeC
),
intent
(
inout
)
::
sfx_C
allocate
(
sfx_C
)
sfx_C
%
zeta
=
c_loc
(
sfx
%
zeta
)
sfx_C
%
zeta
=
c_loc
(
sfx
%
zeta
)
sfx_C
%
Rib
=
c_loc
(
sfx
%
Rib
)
sfx_C
%
Rib
=
c_loc
(
sfx
%
Rib
)
...
...
This diff is collapsed.
Click to expand it.
srcF/sfx_esm.f90
+
7
−
7
View file @
e428de69
...
@@ -12,7 +12,7 @@ module sfx_esm
...
@@ -12,7 +12,7 @@ module sfx_esm
use
sfx_surface
use
sfx_surface
use
sfx_esm_param
use
sfx_esm_param
#if defined(INCLUDE_CXX)
#if defined(INCLUDE_CXX)
use
iso_c_binding
,
only
:
c_loc
use
iso_c_binding
,
only
:
C_LOC
,
C_PTR
use
C_FUNC
use
C_FUNC
#endif
#endif
! --------------------------------------------------------------------------------
! --------------------------------------------------------------------------------
...
@@ -72,8 +72,9 @@ contains
...
@@ -72,8 +72,9 @@ contains
integer
i
integer
i
! ----------------------------------------------------------------------------
! ----------------------------------------------------------------------------
#if defined(INCLUDE_CXX)
#if defined(INCLUDE_CXX)
type
(
meteoDataVecTypeC
),
pointer
::
meteo_c
!< meteorological data (input)
type
(
meteoDataVecTypeC
),
target
::
meteo_c
!< meteorological data (input)
type
(
sfxDataVecTypeC
),
pointer
::
sfx_c
!< surface flux data (output)
type
(
sfxDataVecTypeC
),
target
::
sfx_c
!< surface flux data (output)
type
(
C_PTR
)
::
meteo_c_ptr
,
sfx_c_ptr
type
(
sfx_esm_param
)
::
model_param
type
(
sfx_esm_param
)
::
model_param
type
(
sfx_surface_param
)
::
surface_param
type
(
sfx_surface_param
)
::
surface_param
type
(
sfx_esm_numericsTypeC
)
::
numerics_c
type
(
sfx_esm_numericsTypeC
)
::
numerics_c
...
@@ -90,11 +91,10 @@ contains
...
@@ -90,11 +91,10 @@ contains
call
set_c_struct_sfx_surface_param_values
(
surface_param
)
call
set_c_struct_sfx_surface_param_values
(
surface_param
)
call
set_meteo_vec_c
(
meteo
,
meteo_c
)
call
set_meteo_vec_c
(
meteo
,
meteo_c
)
call
set_sfx_vec_c
(
sfx
,
sfx_c
)
call
set_sfx_vec_c
(
sfx
,
sfx_c
)
meteo_c_ptr
=
C_LOC
(
meteo_c
)
sfx_c_ptr
=
C_LOC
(
sfx_c
)
call
get_surface_fluxes_esm
(
c_loc
(
sfx_c
),
c_loc
(
meteo_c
),
model_param
,
surface_param
,
numerics_c
,
phys_constants
,
n
)
call
get_surface_fluxes_esm
(
sfx_c_ptr
,
meteo_c_ptr
,
model_param
,
surface_param
,
numerics_c
,
phys_constants
,
n
)
deallocate
(
meteo_c
)
deallocate
(
sfx_c
)
#else
#else
do
i
=
1
,
n
do
i
=
1
,
n
#ifdef SFX_FORCE_DEPRECATED_ESM_CODE
#ifdef SFX_FORCE_DEPRECATED_ESM_CODE
...
...
This diff is collapsed.
Click to expand it.
srcF/sfx_sheba.f90
+
6
−
5
View file @
e428de69
...
@@ -12,8 +12,8 @@ module sfx_sheba
...
@@ -12,8 +12,8 @@ module sfx_sheba
use
sfx_surface
use
sfx_surface
use
sfx_sheba_param
use
sfx_sheba_param
#if
defined(INCLUDE_CUDA) ||
defined(INCLUDE_CXX)
#if defined(INCLUDE_CXX)
use
iso_c_binding
,
only
:
c_loc
use
iso_c_binding
,
only
:
C_LOC
,
C_PTR
use
C_FUNC
use
C_FUNC
#endif
#endif
! --------------------------------------------------------------------------------
! --------------------------------------------------------------------------------
...
@@ -74,6 +74,7 @@ contains
...
@@ -74,6 +74,7 @@ contains
#if defined(INCLUDE_CXX)
#if defined(INCLUDE_CXX)
type
(
meteoDataVecTypeC
),
pointer
::
meteo_c
!< meteorological data (input)
type
(
meteoDataVecTypeC
),
pointer
::
meteo_c
!< meteorological data (input)
type
(
sfxDataVecTypeC
),
pointer
::
sfx_c
!< surface flux data (output)
type
(
sfxDataVecTypeC
),
pointer
::
sfx_c
!< surface flux data (output)
type
(
C_PTR
)
::
meteo_c_ptr
,
sfx_c_ptr
type
(
sfx_sheba_param
)
::
model_param
type
(
sfx_sheba_param
)
::
model_param
type
(
sfx_surface_param
)
::
surface_param
type
(
sfx_surface_param
)
::
surface_param
type
(
sfx_sheba_numericsTypeC
)
::
numerics_c
type
(
sfx_sheba_numericsTypeC
)
::
numerics_c
...
@@ -90,10 +91,10 @@ contains
...
@@ -90,10 +91,10 @@ contains
call
set_meteo_vec_c
(
meteo
,
meteo_c
)
call
set_meteo_vec_c
(
meteo
,
meteo_c
)
call
set_sfx_vec_c
(
sfx
,
sfx_c
)
call
set_sfx_vec_c
(
sfx
,
sfx_c
)
call
get_surface_fluxes_sheba
(
c_loc
(
sfx_c
),
c_loc
(
meteo_c
),
model_param
,
surface_param
,
numerics_c
,
phys_constants
,
n
)
meteo_c_ptr
=
C_LOC
(
meteo_c
)
sfx_c_ptr
=
C_LOC
(
sfx_c
)
deallocate
(
meteo_c
)
call
get_surface_fluxes_sheba
(
sfx_c_ptr
,
meteo_c_ptr
,
model_param
,
surface_param
,
numerics_c
,
phys_constants
,
n
)
deallocate
(
sfx_c
)
#else
#else
do
i
=
1
,
n
do
i
=
1
,
n
meteo_cell
=
meteoDataType
(&
meteo_cell
=
meteoDataType
(&
...
...
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