Changeset 5862
- Timestamp:
- Oct 30, 2025, 11:48:34 AM (3 weeks ago)
- File:
-
- 1 edited
-
BOL/Replay/replay_equip.sh (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
BOL/Replay/replay_equip.sh
r5861 r5862 53 53 # * dump_param2.h : écriture des sorties de la routines dans phys.nc 54 54 # * call_param_replay : sous programme d'appelle en boucle à la param 55 # * dump_ini_module. ${f90}: écriture de l'interface "in" de param_ini56 # * call_ini_replay. ${f90}: lecture de l'interface "in" de param_ini55 # * 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 57 57 # dans ${param_ini}_mod.bin. 58 58 # Par ailleurs, un programme replay1d a été ajouté dans phylmd/dyn1d 59 59 # qui appelle call_param_replay 60 60 # Le script ajoute par ailleurs quelques lignes dans ${paramfile} et 61 # ${param_ini}. ${f90}61 # ${param_ini}.f90 62 62 # replay_clean.sh élimine toutes les lignes ajoutées 63 63 # … … 73 73 # 74 74 #============================================================================= 75 76 f90=F9077 75 78 76 #----------------------------------------------------------------------------- … … 110 108 -ncvars) ncvars="`echo $2 | sed -e 's/,/ /g'`" ; shift ; shift ;; 111 109 -lonlat) lonlat=$2 ; shift ; shift ;; 112 *) if (( $# > 1 )) ; then $0 -h ; exit ; fi ; param= `basename $1 .${f90}`; shift110 *) if (( $# > 1 )) ; then $0 -h ; exit ; fi ; param=$( basename $( basename $1 .f90 ) .F90 ) ; shift 113 111 esac 114 112 done … … 128 126 esac 129 127 128 set -u ; inimod_file=$( ls $inimod.[fF]90 ) ; set +u 130 129 replay_comment="replay automatic include" 131 130 paraminc1=dump_replay_${param}_head.h 132 131 paraminc2=dump_replay_${param}_nc_${prefix}.h 133 132 iniinc=dump_replay_ini.h 134 paramfile=`grep -i "subro.* ${param}[\ (]" *.${f90} | sed -e 's/ //g' | grep "${param}(" | cut -d: -f1` 133 echo "grep -i \"subro.* ${param}[\ (]\" *.[fF]90 | sed -e 's/ //g' | grep \"${param}(\" | cut -d: -f1" 134 paramfile=`grep -i "subro.* ${param}[\ (]" *.[fF]90 | sed -e 's/ //g' | grep "${param}(" | cut -d: -f1` 135 135 136 echo =================================================================================== 136 137 echo Equiping $param contained in file $paramfile … … 345 346 346 347 #----------------------------------------------------------------------------- 347 # On nettoye les inclusions précédente dans les fichiers . ${f90}348 # On nettoye les inclusions précédente dans les fichiers .f90 348 349 #----------------------------------------------------------------------------- 349 350 350 351 if [ $nconly = false ] ; then 351 for file in `grep "$replay_comment" *. ${f90}2> /dev/null | cut -d: -f1` ; do352 for file in `grep "$replay_comment" *.[fF]90 2> /dev/null | cut -d: -f1` ; do 352 353 sed -i"" -e "/$replay_comment/d" $file 353 354 done … … 419 420 if [ $nconly = false ] ; then 420 421 421 cat > call_param_replay. ${f90}<<eod422 cat > call_param_replay.f90 <<eod 422 423 subroutine call_param_replay($klon,$klev) 423 424 USE IOIPSL, ONLY : getin … … 426 427 integer :: ifin,irec,it,rec_length_replay=0,replay_irec0=1,replay_nt=1000 427 428 eod 428 grep 'intent.*::' input | sed -e 's/ //g' -e 's/,intent(.*[nt])//'>> call_param_replay. ${f90}429 grep 'intent.*::' input | sed -e 's/ //g' -e 's/,intent(.*[nt])//'>> call_param_replay.f90 429 430 # duplicating declaration for inout variables 430 431 431 432 for 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 433 434 done 434 435 # Initalisation, shared with dump_param1.sh 435 dump_param_open "in" $varin0 >> call_param_replay. ${f90}436 dump_param_open "in" $varin0 >> call_param_replay.f90 436 437 for 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 438 439 done 439 440 440 cat >> call_param_replay. ${f90}<<eod441 cat >> call_param_replay.f90 <<eod 441 442 call getin('replay_nt',replay_nt) 442 443 call getin('replay_irec0',replay_irec0) … … 452 453 eod 453 454 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}<<eod455 block_Replay0 "it == 1" _Replay0 "" $varinout0 >> call_param_replay.f90 456 block_Replay0 "replay_irec0 < 0" "" _Replay0 $varinout0 >> call_param_replay.f90 457 get_subroutine_arg $param $paramfile | sed -e 's/subroutine/ call/' >> call_param_replay.f90 458 block_Replay0 "replay_irec0 < 0" _Replay0 "" $varinout0 >> call_param_replay.f90 459 cat >> call_param_replay.f90 <<eod 459 460 enddo 460 461 return … … 520 521 521 522 if [ $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'` 523 524 varinmodv=`echo $varinmod | sed -e 's/ /,/g'` 524 525 cat > $iniinc <<...eod............................................... … … 528 529 ...eod............................................... 529 530 for var_ in $varinmod ; do echo "print*,'Interface $param_ini $var_',$var_" >> $iniinc ; done 530 include_line "include \"$iniinc\"" $param_ini $inimod .${f90}-before_return531 include_line "include \"$iniinc\"" $param_ini $inimod_file -before_return 531 532 fi # nconly = false 532 533 533 534 #----------------------------------------------------------------------------- 534 # call_ini_replay. ${f90}gere l'initialisation du module en mode replay535 # call_ini_replay.f90 gere l'initialisation du module en mode replay 535 536 #----------------------------------------------------------------------------- 536 537 if [ $nconly = false -a $param_ini != None ] ; then 537 cat > call_ini_replay. ${f90}<<....eod............................................538 cat > call_ini_replay.f90 <<....eod............................................ 538 539 subroutine call_ini_replay 539 540 use $inimod 540 541 IMPLICIT NONE 541 542 ....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........................................... 544 545 open(90,file='$inimod.bin',form='unformatted') 545 546 read(90) $varinmodv 546 547 close(90) 547 548 ....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........................................... 551 551 return 552 552 end subroutine call_ini_replay
Note: See TracChangeset
for help on using the changeset viewer.
