Skip to content

Commit

Permalink
Merge pull request #118 from FESOM/master
Browse files Browse the repository at this point in the history
Merge of the master to FESOM2.1
  • Loading branch information
koldunovn committed Apr 30, 2021
2 parents 5d102e7 + 401c6bf commit 4979513
Show file tree
Hide file tree
Showing 28 changed files with 1,360 additions and 726 deletions.
4 changes: 2 additions & 2 deletions src/MOD_MESH.F90
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ MODULE MOD_MESH

TYPE T_MESH
integer :: nod2D ! the number of 2D nodes
real(kind=WP) :: ocean_area
real(kind=WP) :: ocean_area, ocean_areawithcav
real(kind=WP), allocatable, dimension(:,:) :: coord_nod2D, geo_coord_nod2D
integer :: edge2D ! the number of 2D edges
integer :: edge2D_in ! the number of internal 2D edges
Expand Down Expand Up @@ -63,7 +63,7 @@ MODULE MOD_MESH
!
!
!___horizontal mesh info________________________________________________________
real(kind=WP), allocatable, dimension(:,:) :: area, area_inv
real(kind=WP), allocatable, dimension(:,:) :: area, area_inv, areasvol, areasvol_inv
real(kind=WP), allocatable, dimension(:) :: mesh_resolution

!
Expand Down
18 changes: 12 additions & 6 deletions src/associate_mesh.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ integer , pointer :: elem2D
integer , pointer :: edge2D
integer , pointer :: edge2D_in
real(kind=WP) , pointer :: ocean_area
real(kind=WP) , pointer :: ocean_areawithcav
integer , pointer :: nl
real(kind=WP), dimension(:,:), pointer :: coord_nod2D, geo_coord_nod2D
integer, dimension(:,:) , pointer :: elem2D_nodes
Expand All @@ -22,7 +23,7 @@ real(kind=WP), dimension(:,:), pointer :: gradient_sca
integer, dimension(:) , pointer :: bc_index_nod2D
real(kind=WP), dimension(:) , pointer :: zbar, Z, elem_depth
integer, dimension(:) , pointer :: nlevels, nlevels_nod2D, nlevels_nod2D_min
real(kind=WP), dimension(:,:), pointer :: area, area_inv
real(kind=WP), dimension(:,:), pointer :: area, area_inv, areasvol, areasvol_inv
real(kind=WP), dimension(:) , pointer :: mesh_resolution
real(kind=WP), dimension(:) , pointer :: lump2d_north, lump2d_south
type(sparse_matrix) , pointer :: ssh_stiff
Expand All @@ -35,7 +36,8 @@ nod2D => mesh%nod2D
elem2D => mesh%elem2D
edge2D => mesh%edge2D
edge2D_in => mesh%edge2D_in
ocean_area => mesh%ocean_area
ocean_area => mesh%ocean_area
ocean_areawithcav => mesh%ocean_areawithcav
nl => mesh%nl

!!$coord_nod2D => mesh%coord_nod2D
Expand All @@ -45,6 +47,7 @@ nl => mesh%nl
!!$edge_tri => mesh%edge_tri
!!$elem_edges => mesh%elem_edges
!!$elem_area => mesh%elem_area
!!$node_area => mesh%node_area
!!$edge_dxdy => mesh%edge_dxdy
!!$edge_cross_dxdy => mesh%edge_cross_dxdy
!!$elem_cos => mesh%elem_cos
Expand All @@ -64,7 +67,8 @@ nl => mesh%nl
!!$nlevels => mesh%nlevels
!!$nlevels_nod2D => mesh%nlevels_nod2D
!!$nlevels_nod2D_min => mesh%nlevels_nod2D_min
!!$area => mesh%area
!!$area => mesh%area
!!$area2 => mesh%area2
!!$area_inv => mesh%area_inv
!!$mesh_resolution => mesh%mesh_resolution
!!$ssh_stiff => mesh%ssh_stiff
Expand All @@ -82,7 +86,7 @@ elem2D_nodes(1:3, 1:myDim_elem2D+eDim_elem2D+eXDim_elem2D) => mesh%elem2D_nodes
edges(1:2,1:myDim_edge2D+eDim_edge2D) => mesh%edges
edge_tri(1:2,1:myDim_edge2D+eDim_edge2D) => mesh%edge_tri
elem_edges(1:3,1:myDim_elem2D) => mesh%elem_edges
elem_area(1:myDim_elem2D+eDim_elem2D+eXDim_elem2D) => mesh%elem_area
elem_area(1:myDim_elem2D+eDim_elem2D+eXDim_elem2D) => mesh%elem_area
edge_dxdy(1:2,1:myDim_edge2D+eDim_edge2D) => mesh%edge_dxdy
edge_cross_dxdy(1:4,1:myDim_edge2D+eDim_edge2D) => mesh%edge_cross_dxdy
elem_cos(1:myDim_elem2D+eDim_elem2D+eXDim_elem2D) => mesh%elem_cos
Expand All @@ -102,8 +106,10 @@ elem_depth => mesh%elem_depth ! never used, not even allocated
nlevels(1:myDim_elem2D+eDim_elem2D+eXDim_elem2D) => mesh%nlevels
nlevels_nod2D(1:myDim_nod2D+eDim_nod2D) => mesh%nlevels_nod2D
nlevels_nod2D_min(1:myDim_nod2D+eDim_nod2D) => mesh%nlevels_nod2D_min
area(1:mesh%nl,1:myDim_nod2d+eDim_nod2D) => mesh%area
area_inv(1:mesh%nl,1:myDim_nod2d+eDim_nod2D) => mesh%area_inv
area(1:mesh%nl,1:myDim_nod2d+eDim_nod2D) => mesh%area
areasvol(1:mesh%nl,1:myDim_nod2d+eDim_nod2D) => mesh%areasvol
area_inv(1:mesh%nl,1:myDim_nod2d+eDim_nod2D) => mesh%area_inv
areasvol_inv(1:mesh%nl,1:myDim_nod2d+eDim_nod2D) => mesh%areasvol_inv
mesh_resolution(1:myDim_nod2d+eDim_nod2D) => mesh%mesh_resolution
ssh_stiff => mesh%ssh_stiff
lump2d_north(1:myDim_nod2d) => mesh%lump2d_north
Expand Down
17 changes: 15 additions & 2 deletions src/cavity_param.F90
Original file line number Diff line number Diff line change
Expand Up @@ -356,14 +356,14 @@ end subroutine cavity_heat_water_fluxes_2eq
subroutine cavity_momentum_fluxes(mesh)
use MOD_MESH
use o_PARAM , only: density_0, C_d, WP
use o_ARRAYS, only: UV, stress_surf
use o_ARRAYS, only: UV, Unode, stress_surf, stress_node_surf
use i_ARRAYS, only: u_w, v_w
use g_PARSUP
implicit none

!___________________________________________________________________________
type(t_mesh), intent(inout) , target :: mesh
integer :: elem, elnodes(3), nzmin
integer :: elem, elnodes(3), nzmin, node
real(kind=WP) :: aux

#include "associate_mesh.h"
Expand All @@ -381,6 +381,19 @@ subroutine cavity_momentum_fluxes(mesh)
stress_surf(1,elem)=-aux*UV(1,nzmin,elem)
stress_surf(2,elem)=-aux*UV(2,nzmin,elem)
end do

!___________________________________________________________________________
do node=1,myDim_nod2D+eDim_nod2D
nzmin = ulevels_nod2d(node)
if(nzmin==1) cycle

! momentum stress:
! need to check the sensitivity to the drag coefficient
! here I use the bottom stress coefficient, which is 3e-3, for this FO2 work.
aux=sqrt(Unode(1,nzmin,node)**2+Unode(2,nzmin,node)**2)*density_0*C_d
stress_node_surf(1,node)=-aux*Unode(1,nzmin,node)
stress_node_surf(2,node)=-aux*Unode(2,nzmin,node)
end do
end subroutine cavity_momentum_fluxes
!
!
Expand Down
Loading

0 comments on commit 4979513

Please sign in to comment.