Changeset 867 for codes


Ignore:
Timestamp:
05/16/19 23:45:56 (5 years ago)
Author:
dubos
Message:

devel : towards Fortran driver for unstructured/LAM meshes

Location:
codes/icosagcm/devel/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/parallel/domain.f90

    r856 r867  
    614614  END SUBROUTINE assign_domain_omp 
    615615     
    616            
     616  SUBROUTINE init_domain_unst(dom) 
     617    USE grid_param, ONLY : primal_num 
     618    TYPE(t_domain) :: dom 
     619    dom%ii_begin=1 
     620    dom%ii_end=primal_num 
     621    dom%iim=primal_num 
     622    dom%jj_begin=1 
     623    dom%jj_end=1 
     624    dom%jjm=1 
     625    ALLOCATE(dom%assign_domain(primal_num,1)) 
     626    dom%assign_domain(:,:)=1  ! all cells are assigned to MPI rank 0 
     627  END SUBROUTINE init_domain_unst 
     628 
    617629  SUBROUTINE compute_domain 
    618630    USE grid_param, ONLY : grid_type, grid_unst, grid_ico 
     
    620632    SELECT CASE(grid_type) 
    621633    CASE(grid_unst) 
     634       ! FIXME temporary, sequential hack 
     635       ndomain_glo=1 
     636       ALLOCATE(domain_glo(ndomain_glo)) 
     637       ALLOCATE(domglo_rank(ndomain_glo)) 
     638       ALLOCATE(domglo_loc_ind(ndomain_glo)) 
     639       domglo_rank(:)=0 
     640       domglo_loc_ind(:)=1 
     641 
    622642       ndomain=1 
    623        ALLOCATE(assigned_domain(1)) 
    624        assigned_domain=.TRUE. 
     643       ALLOCATE(domain(ndomain)) 
     644       ALLOCATE(domloc_glo_ind(ndomain)) 
     645       ALLOCATE(assigned_domain(ndomain)) 
     646       domloc_glo_ind(:)=1 
     647       assigned_domain(:)=.TRUE. 
     648 
     649       CALL init_domain_unst(domain(1)) 
     650       CALL init_domain_unst(domain_glo(1)) 
     651 
    625652    CASE DEFAULT 
    626653       CALL init_domain_param 
  • codes/icosagcm/devel/src/time/euler_scheme.f90

    r533 r867  
    167167 
    168168       u=f_u(ind) 
    169        DO l=ll_begin,ll_end 
    170           !DIR$ SIMD 
    171           DO ij=ij_begin,ij_end 
    172              u(ij+u_right,l)=u(ij+u_right,l)*de(ij+u_right) 
    173              u(ij+u_lup,l)=u(ij+u_lup,l)*de(ij+u_lup) 
    174              u(ij+u_ldown,l)=u(ij+u_ldown,l)*de(ij+u_ldown) 
    175           ENDDO 
    176        ENDDO 
     169       SELECT CASE(grid_type) 
     170       CASE(grid_ico) 
     171          DO l=ll_begin,ll_end 
     172             !DIR$ SIMD 
     173             DO ij=ij_begin,ij_end 
     174                u(ij+u_right,l)=u(ij+u_right,l)*de(ij+u_right) 
     175                u(ij+u_lup,l)=u(ij+u_lup,l)*de(ij+u_lup) 
     176                u(ij+u_ldown,l)=u(ij+u_ldown,l)*de(ij+u_ldown) 
     177             ENDDO 
     178          ENDDO 
     179       CASE(grid_unst) 
     180          PRINT *, 'legacy_to_DEC', llm, edge_num, SHAPE(u), SHAPE(de) ! FIXME 
     181          DO ij=1, edge_num 
     182             DO l=1,llm 
     183                u(l,ij) = u(l,ij)*de(ij) 
     184             END DO 
     185          END DO 
     186       CASE DEFAULT 
     187          STOP 'Unsupported grid_type encountered in legacy_to_DEC' 
     188       END SELECT 
    177189    ENDDO 
    178190 
  • codes/icosagcm/devel/src/unstructured/data_unstructured.F90

    r837 r867  
    44  USE mpipara, ONLY : is_mpi_master 
    55  USE grid_param, ONLY : llm, nqdyn 
     6  USE geometry, ONLY : le, le_de, fv, Av, Ai 
    67#ifdef CPP_USING_OMP 
    78  USE OMP_LIB 
     
    2829  INDEX, BIND(C) :: edge_num, primal_num, dual_num, & 
    2930       max_primal_deg, max_dual_deg, max_trisk_deg 
    30   INDEX, ALLOCATABLE :: & ! deg(ij) = nb of vertices = nb of edges of primal/dual cell ij 
     31  INDEX, POINTER :: & ! deg(ij) = nb of vertices = nb of edges of primal/dual cell ij 
    3132       primal_deg(:), primal_edge(:,:), primal_vertex(:,:), primal_ne(:,:), &  
    3233       dual_deg(:), dual_edge(:,:), dual_vertex(:,:), dual_ne(:,:), & 
     
    4344  NUM1(max_nb_stage), BIND(C)              :: tauj       ! diagonal of fast Butcher tableau 
    4445  NUM2(max_nb_stage,max_nb_stage), BIND(C) :: cslj, cflj ! slow and fast modified Butcher tableaus 
    45   NUM1(:), ALLOCATABLE            :: le, le_de, fv, Av, Ai 
    46   NUM2(:,:), ALLOCATABLE          :: centroid, xyz_v, Riv2, wee, ap,bp, mass_bl, mass_dak, mass_dbk 
     46  NUM2(:,:), POINTER          :: centroid, xyz_v, Riv2, wee, ap,bp, mass_bl, mass_dak, mass_dbk 
    4747 
    4848  INTEGER(C_INT), BIND(C) :: comm_icosa 
     
    144144  !---------------------------- CONTEXT INITIALIZATION -------------------------- 
    145145 
    146 #define ALLOC1(v,n1) IF(ALLOCATED(v)) DEALLOCATE(v) ; ALLOCATE(v(n1)) 
    147 #define ALLOC2(v,n1,n2) IF(ALLOCATED(v)) DEALLOCATE(v) ; ALLOCATE(v(n1,n2)) 
     146!#define ALLOC1(v,n1) IF(ALLOCATED(v)) DEALLOCATE(v) ; ALLOCATE(v(n1)) 
     147!#define ALLOC2(v,n1,n2) IF(ALLOCATED(v)) DEALLOCATE(v) ; ALLOCATE(v(n1,n2)) 
     148#define ALLOC1(v,n1) IF(ASSOCIATED(v)) DEALLOCATE(v) ; ALLOCATE(v(n1)) 
     149#define ALLOC2(v,n1,n2) IF(ASSOCIATED(v)) DEALLOCATE(v) ; ALLOCATE(v(n1,n2)) 
    148150 
    149151  SUBROUTINE init_mesh( &  
Note: See TracChangeset for help on using the changeset viewer.