Changeset 5862


Ignore:
Timestamp:
Oct 30, 2025, 11:48:34 AM (3 weeks ago)
Author:
fhourdin
Message:

automatisation de f90/F90

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BOL/Replay/replay_equip.sh

    r5861 r5862  
    5353#  * dump_param2.h          : écriture des sorties de la routines dans phys.nc
    5454#  * call_param_replay : sous programme d'appelle en boucle à la param
    55 #  * dump_ini_module.${f90}   : écriture de l'interface "in" de param_ini
    56 #  * call_ini_replay.${f90}    : lecture de l'interface "in" de param_ini
     55#  * dump_ini_module.f90   : écriture de l'interface "in" de param_ini
     56#  * call_ini_replay.f90    : lecture de l'interface "in" de param_ini
    5757#                dans ${param_ini}_mod.bin.
    5858#  Par ailleurs, un programme replay1d a été ajouté dans phylmd/dyn1d
    5959#        qui appelle call_param_replay
    6060#  Le script ajoute par ailleurs quelques lignes dans ${paramfile} et
    61 #        ${param_ini}.${f90}
     61#        ${param_ini}.f90
    6262#  replay_clean.sh élimine toutes les lignes ajoutées
    6363#
     
    7373#
    7474#=============================================================================
    75 
    76 f90=F90
    7775
    7876#-----------------------------------------------------------------------------
     
    110108     -ncvars) ncvars="`echo $2 | sed -e 's/,/ /g'`" ; shift ; shift ;;
    111109     -lonlat) lonlat=$2 ; shift ; shift ;;
    112      *) if (( $# > 1 )) ; then $0 -h ; exit ; fi ; param=`basename $1 .${f90}` ; shift
     110     *) if (( $# > 1 )) ; then $0 -h ; exit ; fi ; param=$( basename $( basename $1 .f90 ) .F90 ) ; shift
    113111    esac
    114112done
     
    128126esac
    129127
     128set -u ; inimod_file=$( ls $inimod.[fF]90 ) ; set +u
    130129replay_comment="replay automatic include"
    131130paraminc1=dump_replay_${param}_head.h
    132131paraminc2=dump_replay_${param}_nc_${prefix}.h
    133132iniinc=dump_replay_ini.h
    134 paramfile=`grep -i "subro.* ${param}[\ (]" *.${f90} | sed -e 's/ //g' | grep "${param}(" | cut -d: -f1`
     133echo "grep -i \"subro.* ${param}[\ (]\" *.[fF]90 | sed -e 's/ //g' | grep \"${param}(\" | cut -d: -f1"
     134paramfile=`grep -i "subro.* ${param}[\ (]" *.[fF]90 | sed -e 's/ //g' | grep "${param}(" | cut -d: -f1`
     135
    135136echo ===================================================================================
    136137echo Equiping $param contained in file $paramfile
     
    345346
    346347#-----------------------------------------------------------------------------
    347 # On nettoye les inclusions précédente dans les fichiers .${f90}
     348# On nettoye les inclusions précédente dans les fichiers .f90
    348349#-----------------------------------------------------------------------------
    349350
    350351if [ $nconly = false ] ; then
    351    for file in `grep "$replay_comment" *.${f90} 2> /dev/null | cut -d: -f1` ; do
     352   for file in `grep "$replay_comment" *.[fF]90 2> /dev/null | cut -d: -f1` ; do
    352353      sed -i"" -e "/$replay_comment/d" $file
    353354   done
     
    419420if [ $nconly = false ] ; then
    420421
    421 cat > call_param_replay.${f90} <<eod
     422cat > call_param_replay.f90 <<eod
    422423subroutine call_param_replay($klon,$klev)
    423424USE IOIPSL, ONLY : getin
     
    426427integer :: ifin,irec,it,rec_length_replay=0,replay_irec0=1,replay_nt=1000
    427428eod
    428 grep 'intent.*::' input | sed -e 's/ //g' -e 's/,intent(.*[nt])//'>> call_param_replay.${f90}
     429grep 'intent.*::' input | sed -e 's/ //g' -e 's/,intent(.*[nt])//'>> call_param_replay.f90
    429430# duplicating declaration for inout variables
    430431
    431432for var in $varinout0 ; do
    432     sed -e 's/::/ :: /' -e 's/,/ , /g' -e 's/$/ /' input | grep 'intent.*inout.*::.* '$var' ' | sed -e 's/ //g' -e 's/,intent(.*[nt])//' | sed -e 's/::.*$/, allocatable, save :: '$var'_Replay0/' | sed -e 's/'$klon'/:/' -e 's/'${klev}'+1/:/' -e 's/'${klev}'/:/' >> call_param_replay.${f90}
     433    sed -e 's/::/ :: /' -e 's/,/ , /g' -e 's/$/ /' input | grep 'intent.*inout.*::.* '$var' ' | sed -e 's/ //g' -e 's/,intent(.*[nt])//' | sed -e 's/::.*$/, allocatable, save :: '$var'_Replay0/' | sed -e 's/'$klon'/:/' -e 's/'${klev}'+1/:/' -e 's/'${klev}'/:/' >> call_param_replay.f90
    433434done
    434435# Initalisation, shared with dump_param1.sh
    435 dump_param_open "in" $varin0 >> call_param_replay.${f90}
     436dump_param_open "in" $varin0 >> call_param_replay.f90
    436437for var in $varinout0 ; do
    437     sed -e 's/::/ :: /' -e 's/,/ , /g' -e 's/$/ /' input | grep 'intent.*inout.*::.* '$var' ' | sed -e 's/intent(.*t)//' -e 's/^.*(/allocate('$var'_Replay0(/' -e 's/).*$/))/' >> call_param_replay.${f90}
     438    sed -e 's/::/ :: /' -e 's/,/ , /g' -e 's/$/ /' input | grep 'intent.*inout.*::.* '$var' ' | sed -e 's/intent(.*t)//' -e 's/^.*(/allocate('$var'_Replay0(/' -e 's/).*$/))/' >> call_param_replay.f90
    438439done
    439440
    440 cat >> call_param_replay.${f90} <<eod
     441cat >> call_param_replay.f90 <<eod
    441442call getin('replay_nt',replay_nt)
    442443call getin('replay_irec0',replay_irec0)
     
    452453eod
    453454
    454 block_Replay0 "it == 1"          _Replay0   ""       $varinout0 >> call_param_replay.${f90}
    455 block_Replay0 "replay_irec0 < 0" ""         _Replay0 $varinout0 >> call_param_replay.${f90}
    456 get_subroutine_arg $param $paramfile | sed -e 's/subroutine/   call/' >> call_param_replay.${f90}
    457 block_Replay0 "replay_irec0 < 0" _Replay0   ""       $varinout0 >> call_param_replay.${f90}
    458 cat >> call_param_replay.${f90} <<eod
     455block_Replay0 "it == 1"          _Replay0   ""       $varinout0 >> call_param_replay.f90
     456block_Replay0 "replay_irec0 < 0" ""         _Replay0 $varinout0 >> call_param_replay.f90
     457get_subroutine_arg $param $paramfile | sed -e 's/subroutine/   call/' >> call_param_replay.f90
     458block_Replay0 "replay_irec0 < 0" _Replay0   ""       $varinout0 >> call_param_replay.f90
     459cat >> call_param_replay.f90 <<eod
    459460enddo
    460461return
     
    520521
    521522if [ $nconly = false -a $param_ini != None ] ; then
    522    varinmod=`grep -i 'intent.in' $inimod.${f90} | sed -e 's/\!.*$//' | cut -d: -f3 | sed -e 's/,/ /g'`
     523   varinmod=`grep -i 'intent.in' $inimod_file | sed -e 's/\!.*$//' | cut -d: -f3 | sed -e 's/,/ /g'`
    523524   varinmodv=`echo $varinmod | sed -e 's/ /,/g'`
    524525   cat > $iniinc <<...eod...............................................
     
    528529...eod...............................................
    529530   for var_ in $varinmod ; do echo "print*,'Interface $param_ini $var_',$var_" >> $iniinc ; done
    530    include_line "include \"$iniinc\"" $param_ini $inimod.${f90}  -before_return
     531   include_line "include \"$iniinc\"" $param_ini $inimod_file  -before_return
    531532fi # nconly = false
    532533
    533534#-----------------------------------------------------------------------------
    534 # call_ini_replay.${f90} gere l'initialisation du module en mode replay
     535# call_ini_replay.f90 gere l'initialisation du module en mode replay
    535536#-----------------------------------------------------------------------------
    536537if [ $nconly = false -a $param_ini != None ] ; then
    537     cat > call_ini_replay.${f90} <<....eod............................................
     538    cat > call_ini_replay.f90 <<....eod............................................
    538539    subroutine call_ini_replay
    539540    use $inimod
    540541    IMPLICIT NONE
    541542....eod............................................
    542     grep -i intent.in $inimod.${f90}  |  tr '[A-Z]' '[a-z]' | sed -e 's/,.*intent.i.*)//' >> call_ini_replay.${f90}
    543     cat >> call_ini_replay.${f90} <<....eod...........................................
     543    grep -i intent.in $inimod_file  |  tr '[A-Z]' '[a-z]' | sed -e 's/,.*intent.i.*)//' >> call_ini_replay.f90
     544    cat >> call_ini_replay.f90 <<....eod...........................................
    544545    open(90,file='$inimod.bin',form='unformatted')
    545546    read(90) $varinmodv
    546547    close(90)
    547548....eod...........................................
    548     #get_subroutine_arg $param_ini $inimod.${f90} ; exit
    549     get_subroutine_arg $param_ini $inimod.${f90} | sed -e 's/subroutine/call/' >> call_ini_replay.${f90}
    550     cat >> call_ini_replay.${f90} <<....eod...........................................
     549    get_subroutine_arg $param_ini $inimod_file) | sed -e 's/subroutine/call/' >> call_ini_replay.f90
     550    cat >> call_ini_replay.f90 <<....eod...........................................
    551551    return
    552552    end subroutine call_ini_replay
Note: See TracChangeset for help on using the changeset viewer.