DevelopmentActivities/ORCHIDEE-CNP/LibIGCMmod01: libigcm_link.2.patch

File libigcm_link.2.patch, 4.8 KB (added by dgoll, 5 years ago)

make libIGCM use links instead of copy for ORCHIDEE boundary files (A. Jornet)

  • libIGCM_comp/libIGCM_comp.ksh

     
    2121  IGCM_debug_Print 1 "IGCM_comp_Initialize" 
    2222  echo 
    2323 
     24  set -x 
     25 
    2426  typeset comp compname comptagname auxprint card_UserChoices first_option option i j 
    2527  for comp in ${config_ListOfComponents[*]} ; do 
    2628 
     
    315317              IGCM_sys_Get ${file_in} ${file_out} 
    316318              #IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
    317319            else 
    318               IGCM_sys_Cp ${file_in} ${file_out} 
     320              IGCM_sys_Cp ${file_in} ${file_out} # original 
     321              #ln -s ${file_in} ${file_out} 
    319322            fi 
    320323            (( i=i+2 )) 
    321324          done 
     
    454457{ 
    455458  IGCM_debug_PushStack "IGCM_comp_GetInputBoundaryFiles" 
    456459 
     460  set -x 
     461 
    457462  # Debug Print : 
    458463  echo 
    459464  IGCM_debug_Print 1 "IGCM_comp_GetInputBoundaryFiles" 
     
    465470  if [ ${Period} = 1 ]; then 
    466471    ListFixBoundary=" " 
    467472  fi 
     473  
     474  # default: copy 
     475  mode="cp" 
     476  if [ ${#} -eq 1 ] 
     477  then 
     478    mode=${1} 
     479  fi 
    468480 
    469481  for comp in ${config_ListOfComponents[*]} ; do 
    470482 
     
    497509          IGCM_sys_Get ${file_in} ${file_out} 
    498510          IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
    499511        else 
    500           IGCM_sys_Cp ${file_in} ${file_out} 
     512          #IGCM_sys_Cp ${file_in} ${file_out} 
     513          #ln -fs ${file_in} ${file_out} 
     514          IGCM_sys_file_Get ${mode} ${file_in} ${file_out} 
    501515        fi 
    502516 
    503517        (( i=i+2 )) 
     
    527541            IGCM_sys_Get ${file_in} ${file_out} 
    528542            #IGCM_comp_PrepareDeletedFiles ${file_in} ${file_out} 
    529543          else 
    530             IGCM_sys_Cp ${file_in} ${file_out} 
     544            #IGCM_sys_Cp ${file_in} ${file_out} 
     545            #ln -fs ${file_in} ${file_out} 
     546            IGCM_sys_file_Get ${mode} ${file_in} ${file_out} 
    531547          fi 
    532548 
    533549          if [ X${file_out} != X. ] ; then 
     
    907923 
    908924  NbFiles=$( ls * 2> /dev/null | wc -l ) 
    909925  if [ ${NbFiles} -gt 0 ] ; then 
    910     IGCM_sys_Chmod u+rw * 
     926#    IGCM_sys_Chmod u+rw * 
     927#    for fname in ls * 2> /dev/null; do 
     928    for fname in *; do 
     929        if [ ! -h ${fname} ]; then 
     930            echo "=> Chmod ${fname} ..." 
     931            IGCM_sys_Chmod u+rw ${fname} 
     932        fi 
     933    done 
    911934  fi 
    912935 
    913936  IGCM_debug_PopStack "IGCM_comp_GetInputRestartFiles" 
     
    13871410  IGCM_debug_Print 1 "IGCM_comp_Update" 
    13881411  echo 
    13891412 
     1413  set -x 
     1414 
    13901415  typeset ExeNameIn ExeNameOut 
    13911416  typeset comp compname comptagname 
    13921417  for comp in ${config_ListOfComponents[*]} ; do 
  • libIGCM_sys/libIGCM_sys.ksh

     
    469469} 
    470470 
    471471#D-#================================================== 
     472#D-function IGCM_sys_file_Get 
     473#D-* Purpose: Copy or link a file from source to destination 
     474#D-* Examples: IGCM_sys_file_Get ln source_file linked_file 
     475#D-            IGCM_sys_file_Get cp source_file copied_file 
     476function IGCM_sys_file_Get { 
     477  IGCM_debug_PushStack "IGCM_sys_file_Get" $@ 
     478 
     479  typeset SRC DEST action  
     480  set -x 
     481 
     482  if ( $DEBUG_sys ) ; then 
     483    echo "IGCM_sys_file_Get :" $@ 
     484  fi 
     485  if [ $DRYRUN -le 2 ]; then 
     486    if [ X${1} = X'ln' ] ; then 
     487      action='IGCM_sys_Ln' 
     488    elif [ X${1} = X'cp' ] ; then 
     489      action='IGCM_sys_Cp' 
     490    else 
     491      echo "IGCM_sys_file_Get, ERROR : Only available ln or cp actions." 
     492      IGCM_debug_Exit "IGCM_sys_file_Get" 
     493      return 
     494    fi 
     495    SRC=${2} 
     496    DEST=${3} 
     497 
     498    cmd="${action} ${SRC} ${DEST}"  
     499    eval $cmd 
     500  fi 
     501  IGCM_debug_PopStack "IGCM_sys_file_Get" 
     502} 
     503 
     504#D-#================================================== 
    472505#D-function IGCM_sys_Miror_libIGCM 
    473506#D-* Purpose: Mirror libIGCM PATH and lib to frontend 
    474507#D-* Examples: 
     
    495528} 
    496529 
    497530#D-#================================================== 
     531#D-function IGCM_sys_Ln 
     532#D-* Purpose: generic soft link 
     533#D-* Examples: 
     534#D- 
     535function IGCM_sys_Ln { 
     536  IGCM_debug_PushStack "IGCM_sys_Ln" $@ 
     537  if ( $DEBUG_sys ) ; then 
     538    echo "IGCM_sys_Lp :" $@ 
     539  fi 
     540 
     541  typeset status 
     542 
     543  #echo ln -sf $@ > ${OUTCOMMAND_PATH}/out_command_${LOGIN}.$$ 2>&1 
     544  \ln -sf $@ >> ${OUTCOMMAND_PATH}/out_command_${LOGIN}.$$ 2>&1 
     545  status=$? 
     546 
     547  if [ ${status} -gt 0 ] ; then 
     548    echo "IGCM_sys_Ln : error code ${status}" 
     549    cat ${OUTCOMMAND_PATH}/out_command_${LOGIN}.$$ 
     550    IGCM_debug_Exit "IGCM_sys_Ln" 
     551  else 
     552    \rm ${OUTCOMMAND_PATH}/out_command_${LOGIN}.$$ 
     553  fi 
     554  IGCM_debug_PopStack "IGCM_sys_Ln" 
     555} 
     556 
     557#D-#================================================== 
    498558#D-function IGCM_sys_Cp 
    499559#D-* Purpose: generic cp 
    500560#D-* Examples: