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.
Changeset 1200 for trunk/AGRIF/LIB/SubLoopCreation.c – NEMO

Ignore:
Timestamp:
2008-09-24T15:05:20+02:00 (16 years ago)
Author:
rblod
Message:

Adapt Agrif to the new SBC and correct several bugs for agrif (restart writing and reading), see ticket #133
Note : this fix does not work yet on NEC computerq (sxf90/360)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/AGRIF/LIB/SubLoopCreation.c

    r774 r1200  
    8484      /* now we should write the function declaration                         */ 
    8585      /*    case if it is the                                                 */ 
    86       WriteFunctionDeclaration(); 
     86      WriteFunctionDeclaration(1); 
    8787      if ( mark == 1 ) fprintf(fortranout,"!!! 555555555555555 \n"); 
    88       if ( SubInList_ContainsSubroutine() == 0 ) WriteSubroutineDeclaration(1); 
     88 
     89//      if ( SubInList_ContainsSubroutine() == 0 ) WriteSubroutineDeclaration(1); 
     90   
    8991      if ( mark == 1 ) fprintf(fortranout,"!!! 666666666666666 \n"); 
    9092      if ( todebug == 1 ) printf("Out of writeheadnewsub_0\n"); 
     
    100102      WriteLocalParamDeclaration(); 
    101103      if ( mark == 1 ) fprintf(fortranout,"!!! bbbbbbbbbbbbbbb \n"); 
    102       if ( functiondeclarationisdone == 0 ) WriteFunctionDeclaration(); 
     104      if ( functiondeclarationisdone == 0 ) WriteFunctionDeclaration(1); 
    103105      WriteArgumentDeclaration_beforecall(); 
    104106/*      writesub_loopdeclaration_scalar(List_SubroutineArgument_Var,fortranout); 
     
    106108      if ( mark == 1 ) fprintf(fortranout,"!!! ccccccccccccccc \n"); 
    107109      if ( mark == 1 ) fprintf(fortranout,"!!! ddddddddddddddd \n"); 
    108       WriteSubroutineDeclaration(1); 
     110//      WriteSubroutineDeclaration(1); 
    109111      if ( mark == 1 ) fprintf(fortranout,"!!! eeeeeeeeeeeeeee \n"); 
    110112   } 
     
    138140   while ( parcours ) 
    139141   { 
     142 
    140143      /* if the readed variable is a variable of the subroutine               */ 
    141144      /*    subroutinename we should write the name of this variable          */ 
     
    229232   int compteur ; 
    230233 
     234   strcpy(ligne,""); 
     235    
    231236   if ( todebug == 1 ) printf("Enter in WriteVariablelist_subloop_Call\n"); 
    232237   parcours = List_UsedInSubroutine_Var; 
     
    238243      /*    in the output file                                                */ 
    239244      if ( !strcasecmp(parcours->var->v_subroutinename,subroutinename)  && 
    240            parcours->var->v_allocatable == 0                            && 
     245          (parcours->var->v_allocatable == 0  || !strcasecmp(parcours->var->v_typevar,"type"))      && 
    241246           parcours->var->v_pointerdeclare == 0 
    242247         ) 
     
    300305      parcours = parcours -> suiv; 
    301306   } 
     307    
    302308   Save_Length(ligne,41); 
    303309   tofich(outputfile,ligne,0); 
     
    327333{ 
    328334   listvar *parcours; 
    329    char ligne[LONG_40M]; 
     335/*   char ligne[LONG_40M];*/ 
     336   char *ligne; 
    330337   int compteur; 
    331338 
     339/*   strcpy(ligne," ");*/ 
     340 
     341   ligne=(char *)malloc(LONG_40M*sizeof(char)); 
     342    
    332343   if ( todebug == 1 ) printf("Enter in WriteVariablelist_subloop_Def\n"); 
    333344   parcours = List_UsedInSubroutine_Var; 
     
    339350      /*    in the output file                                                */ 
    340351      if ( !strcasecmp(parcours->var->v_subroutinename,subroutinename)  && 
    341            parcours->var->v_allocatable == 0                            && 
     352          (parcours->var->v_allocatable == 0  || !strcasecmp(parcours->var->v_typevar,"type"))      && 
    342353           parcours->var->v_pointerdeclare == 0 
    343354         ) 
     
    385396   if ( didvariableadded == 0 ) fseek(outputfile,-1,SEEK_CUR);*/ 
    386397   if ( todebug == 1 ) printf("Out of WriteVariablelist_subloop_Def\n"); 
     398   strcpy(ligne,""); 
     399    
     400   free(ligne); 
    387401} 
    388402 
     
    462476      fclose(fortranout); 
    463477      fortranout = oldfortranout; 
     478 
     479 
    464480      AddUseAgrifUtilBeforeCall_0(fortranout); 
    465       if ( functiondeclarationisdone == 0 ) WriteFunctionDeclaration(); 
     481      if ( functiondeclarationisdone == 0 ) WriteFunctionDeclaration(0); 
    466482      WriteArgumentDeclaration_beforecall(); 
    467483      if ( !strcasecmp(subofagrifinitgrids,subroutinename) ) 
     
    493509      tofich(fortranout,ligne,1); 
    494510      } 
     511    oldfortranout = (FILE *)NULL;       
    495512   if ( todebug == 1 ) printf("Out of closeandcallsubloopandincludeit_0\n"); 
    496513   } 
     514    
    497515} 
    498516 
     
    514532      fclose(fortranout); 
    515533      fortranout = oldfortranout; 
     534 
    516535      AddUseAgrifUtilBeforeCall_0(fortranout); 
    517536      if ( ImplicitNoneInSubroutine() == 1 ) fprintf(fortranout, 
    518537                                                       "      IMPLICIT NONE\n"); 
    519538      WriteLocalParamDeclaration(); 
    520       if ( functiondeclarationisdone == 0 ) WriteFunctionDeclaration(); 
     539      if ( functiondeclarationisdone == 0 ) WriteFunctionDeclaration(0); 
    521540      WriteArgumentDeclaration_beforecall(); 
    522541      WriteSubroutineDeclaration(0); 
     
    543562      tofich(fortranout,ligne,1); 
    544563      } 
     564   oldfortranout = (FILE *)NULL; 
    545565   if ( todebug == 1 ) printf("Out of closeandcallsubloopandincludeit_0\n"); 
    546566   } 
Note: See TracChangeset for help on using the changeset viewer.