New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
user/nicolasmartin/CommitMessage (diff) – NEMO

Changes between Version 2 and Version 3 of user/nicolasmartin/CommitMessage


Ignore:
Timestamp:
2019-10-10T11:45:03+02:00 (5 years ago)
Author:
nicolasmartin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • user/nicolasmartin/CommitMessage

    v2 v3  
    22These changes enable sufficient support for allocatable, zero-dimension character variables defined using the: 
    33 
    4 {{{#!f 
     4{{{ 
    55CHARACTER(LEN=:), ALLOCATABLE :: cstr 
    66}}} 
     
    10101. Adding : as a valid length identifier at line 1028 in fortran.y (and then rebuilding fortran.c and main.c via make -f Makefile.lex) 
    11112. Adding a carrayu entry to Agrif_Variable_c type in AGRIF_FILES/modtypes.F90 where carrayu is declared as: 
    12 {{{#!f 
     12{{{#!c++ 
    1313   character(:)  ,                 allocatable :: carrayu 
    1414}}} 
    15153. Ensuring correct deallocation of carrayu in AGRIF_FILES/modsauv.F90 and AGRIF_FILES/modutil.F90 
    16164. Substituting carrayu in place of carray0 declarations when character length matches : for zero-dimension variables. This occurs twice in LIB/toamr.c, e.g: 
    17 {{{#!f 
     17{{{ 
    1818        if (!strcasecmp(var->v_dimchar  ,":") && var->v_nbdim == 0 ) 
    1919        { 
     
    2424}}} 
    2525Any such character variables must be allocated by the user. Typically this is done with lines such as: 
    26 {{{#!f 
     26{{{ 
    2727      IF ( .NOT. ALLOCATED(cdnambuff) ) ALLOCATE( CHARACTER(LEN=kleng) :: cdnambuff ) 
    2828}}} 
    2929making AGRIF accept the CHARACTER(LEN=kleng) :: construct within the ALLOCATE statement was beyond my skills. Fortunately, for the current purpose, this 
    3030isn't necessary since such allocations only occur within utility routines in which the appropriate tabvar has been passed down. So: 
    31 {{{#!f 
     31{{{ 
    3232!$AGRIF_DO_NOT_TREAT 
    3333      IF ( .NOT. ALLOCATED(cdnambuff) ) ALLOCATE( CHARACTER(LEN=kleng) :: cdnambuff )