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 4751 – NEMO

Changeset 4751


Ignore:
Timestamp:
2014-08-28T15:28:12+02:00 (10 years ago)
Author:
djlea
Message:

Changes to include an OBS test in SETTE. At the moment this uses an example profile observation.

Location:
branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM
Files:
103 added
9 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/ARCH/arch-PW7_METO.fcm

    r4377 r4751  
    2323%FC                  mpxlf90_r 
    2424%FCFLAGS             -qrealsize=8 -qextname -qsuffix=f=f90 -qarch=pwr7 -qtune=pwr7 -g -O2 -qstrict -qinitauto=7FBFFFFF 
    25 %FFLAGS              -qrealsize=8 -qextname -qsuffix=f=f90 -qarch=pwr7 -qtune=pwr7 -g -O2 -qstrict -qinitauto=7FBFFFFF 
     25%FFLAGS              -qrealsize=8 -qextname -qarch=pwr7 -qtune=pwr7 -g -O2 -qstrict -qinitauto=7FBFFFFF -qfixed 
    2626%LD                  mpCC_r 
    2727%LDFLAGS             -lxlf90 -L/projects/um1/lib -lsig -O2 -L MASS 
  • branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/CONFIG/ORCA2_LIM/cpp_ORCA2_LIM.fcm

    r4523 r4751  
    1  bld::tool::fppkeys key_trabbl key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_zdftke key_zdfddm key_zdftmx key_iomput key_mpp_mpi 
     1bld::tool::fppkeys key_trabbl key_lim2 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_zdftke key_zdfddm key_zdftmx key_iomput key_mpp_mpi key_diaobs key_asminc 
  • branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/CONFIG/ORCA2_LIM3/cpp_ORCA2_LIM3.fcm

    r4161 r4751  
    1  bld::tool::fppkeys key_trabbl key_lim3 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_zdftke key_zdfddm key_zdftmx key_iomput key_mpp_mpi 
     1 bld::tool::fppkeys key_trabbl key_lim3 key_dynspg_flt key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_zdftke key_zdfddm key_zdftmx key_iomput key_mpp_mpi key_diaobs key_asminc 
  • branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/CONFIG/SHARED/1_namelist_ref

    r4347 r4751  
    10671067                           !     ln_ssh                  Logical switch for SSH observations 
    10681068 
    1069    ln_sst     = .true.     ! Logical switch for SST observations 
    1070    ln_reysst  = .true.     !     ln_reysst               Logical switch for Reynolds observations 
     1069   ln_sst     = .false.     ! Logical switch for SST observations 
     1070   ln_reysst  = .false.     !     ln_reysst               Logical switch for Reynolds observations 
    10711071   ln_ghrsst  = .false.    !     ln_ghrsst               Logical switch for GHRSST observations       
    10721072 
  • branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/CONFIG/SHARED/namelist_ref

    r4384 r4751  
    10851085                           !     ln_ssh                  Logical switch for SSH observations 
    10861086 
    1087    ln_sst     = .true.     ! Logical switch for SST observations 
    1088    ln_reysst  = .true.     !     ln_reysst               Logical switch for Reynolds observations 
     1087   ln_sst     = .false.     ! Logical switch for SST observations 
     1088   ln_reysst  = .false.     !     ln_reysst               Logical switch for Reynolds observations 
    10891089   ln_ghrsst  = .false.    !     ln_ghrsst               Logical switch for GHRSST observations       
    10901090 
  • branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/CONFIG/cfg.txt

    r4529 r4751  
    1111GYRE_BFM OPA_SRC TOP_SRC 
    1212ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
     13ORCA2_LIM_OBS OPA_SRC LIM_SRC_2 
  • branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r4624 r4751  
    208208      !----------------------------------------------------------------------- 
    209209 
     210      !Initalise all values in namelist arrays 
     211      enactfiles(:) = '' 
     212      coriofiles(:) = '' 
     213      profbfiles(:) = '' 
     214      slafilesact(:) = '' 
     215      slafilespas(:) = '' 
     216      slafbfiles(:) = '' 
     217      sstfiles(:)   = '' 
     218      sstfbfiles(:) = '' 
     219      seaicefiles(:) = '' 
    210220      velcurfiles(:) = '' 
    211221      veladcpfiles(:) = '' 
     222      velavcurfiles(:) = '' 
     223      velhrcurfiles(:) = '' 
     224      velavadcpfiles(:) = '' 
     225      velhradcpfiles(:) = '' 
     226      velfbfiles(:) = '' 
     227      velcurfiles(:) = '' 
     228      veladcpfiles(:) = '' 
     229      endailyavtypes(:) = -1 
     230      endailyavtypes(1) = 820 
     231      ln_profb_ena(:) = .FALSE. 
     232      ln_profb_enatim(:) = .TRUE. 
     233      ln_velfb_av(:) = .FALSE. 
     234      ln_ignmis = .FALSE.       
     235 
    212236      CALL ini_date( dobsini ) 
    213237      CALL fin_date( dobsend ) 
  • branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/SETTE/sette.sh

    r4379 r4751  
    138138# AMM12           : 7 &  8 
    139139# SAS             : 9 & 10 
    140 # ORCA2_AGRIF_LIM: 11 
     140# ORCA2_LIM_OBS:   11 
     141# ORCA2_AGRIF_LIM: 12 
    141142for config in 1 2 3 4 5 6 7 8 9 10 11 
    142143 
     
    865866fi 
    866867 
     868if [ ${config} -eq 11 ] ; then 
     869   ## Reproducibility tests for ORCA2_LIM_OBS 
     870    export TEST_NAME="REPRO_4_4" 
     871    cd ${CONFIG_DIR} 
     872    . ./makenemo -m ${CMP_NAM} -n ORCA2_LIM_OBS -r ORCA2_LIM_OBS -j 8 del_key ${DEL_KEYS} 
     873    cd ${SETTE_DIR} 
     874    . ./param.cfg 
     875    . ./all_functions.sh 
     876    . ./prepare_exe_dir.sh 
     877    JOB_FILE=${EXE_DIR}/run_job.sh 
     878    NPROC=16 
     879    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
     880    cd ${EXE_DIR} 
     881    set_namelist namelist_cfg nn_it000 1 
     882    set_namelist namelist_cfg nn_itend 75 
     883    set_namelist namelist_cfg nn_fwb 0 
     884    set_namelist namelist_cfg ln_ctl .false. 
     885    set_namelist namelist_cfg ln_clobber .true. 
     886    set_namelist namelist_cfg jpni 4 
     887    set_namelist namelist_cfg jpnj 4 
     888    set_namelist namelist_cfg jpnij 16 
     889    set_namelist namelist_cfg nn_solv 2 
     890    set_namelist namelist_cfg ln_t3d .true. 
     891    set_namelist namelist_cfg ln_s3d .true. 
     892    set_namelist namelist_cfg ln_profb .true. 
     893    set_namelist namelist_cfg ln_sst .false. 
     894    if [ ${USING_MPMD} == "yes" ] ; then 
     895       set_xio_using_server iodef.xml true 
     896    else 
     897       set_xio_using_server iodef.xml false 
     898    fi 
     899    cd ${SETTE_DIR} 
     900    . ./prepare_job.sh input_ORCA2_LIM_OBS.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
     901    cd ${SETTE_DIR} 
     902    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     903 
     904   cd ${SETTE_DIR} 
     905    export TEST_NAME="REPRO_2_8" 
     906    . ./prepare_exe_dir.sh 
     907    JOB_FILE=${EXE_DIR}/run_job.sh 
     908    NPROC=16 
     909    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
     910    cd ${EXE_DIR} 
     911    set_namelist namelist_cfg nn_it000 1 
     912    set_namelist namelist_cfg nn_itend 75 
     913    set_namelist namelist_cfg ln_clobber .true. 
     914    set_namelist namelist_cfg nn_fwb 0 
     915    set_namelist namelist_cfg jpni 2 
     916    set_namelist namelist_cfg jpnj 8 
     917    set_namelist namelist_cfg jpnij 16 
     918    set_namelist namelist_cfg nn_solv 2 
     919    set_namelist namelist_cfg ln_t3d .true. 
     920    set_namelist namelist_cfg ln_s3d .true. 
     921    set_namelist namelist_cfg ln_profb .true. 
     922    set_namelist namelist_cfg ln_sst .false. 
     923   if [ ${USING_MPMD} == "yes" ] ; then 
     924       set_xio_using_server iodef.xml true 
     925    else 
     926       set_xio_using_server iodef.xml false 
     927    fi 
     928    cd ${SETTE_DIR} 
     929    . ./prepare_job.sh input_ORCA2_LIM_OBS.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
     930    cd ${SETTE_DIR} 
     931    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     932fi 
     933 
    867934# TEST FOR ORCA2_LIM_AGRIF : simple test of running AGRIF (no restartability neither reproducibility tests) 
    868 if [ ${config} -eq 11 ] ;  then 
     935if [ ${config} -eq 12 ] ;  then 
    869936    ## ORCA2_LIM with Agulhas AGRIF zoom in MPI 
    870937    export TEST_NAME="SHORT" 
  • branches/2014/dev_r4650_UKMO14.11_SETTE_OBSASM/NEMOGCM/TOOLS/OBSTOOLS/src/date_utils.F90

    r3000 r4751  
    3434 
    3535   END SUBROUTINE add_date 
     36 
     37 
     38   SUBROUTINE add_days_to_date(initial_date,days,final_date) 
     39 
     40      ! Add a number of days to initial_date and return it in final_date 
     41 
     42      IMPLICIT NONE 
     43 
     44 
     45      !! Arguments 
     46      INTEGER,INTENT(in) :: initial_date ! Initial date (YYYYMMDD) 
     47      INTEGER,INTENT(in) :: days         ! Number of days to add 
     48      INTEGER,INTENT(out) :: final_date  ! Final date (YYYYMMDD) 
     49 
     50      !! Local variables 
     51 
     52      INTEGER :: isec,imin,ihours,iyear,imon,iday ! temporary results 
     53      REAL(dp):: juld 
     54 
     55      ! Account for lack of hours in date format (initial_date*100) 
     56      CALL split_date(initial_date*100,iyear,imon,iday,ihours) 
     57 
     58      CALL greg2jul(0,0,ihours,iday,imon,iyear,juld) 
     59 
     60      juld=juld+REAL(days) 
     61 
     62      CALL jul2greg(isec,imin,ihours,iday,imon,iyear,juld) 
     63 
     64      final_date=(iyear*1000000+imon*10000+iday*100+ihours)/100 
     65 
     66   END SUBROUTINE add_days_to_date 
     67 
    3668 
    3769   SUBROUTINE split_date(iyyyymmddhh,iyyyy,imm,idd,ihh) 
     
    379411   END FUNCTION diffdate 
    380412 
     413   INTEGER FUNCTION difftime(itime1,itime2) 
     414 
     415      ! Compute difference in minutes between times 
     416      ! Assumes HHMM or HMM or MM or M format for dates 
     417      ! 
     418      ! ORDER MATTERS - itime1 is ealier time 
     419      ! Result is an integer number of minutes 
     420 
     421      IMPLICIT NONE 
     422      INTEGER, INTENT(IN) :: itime1,itime2    ! Times to be diffed. 
     423      INTEGER :: imin1, imin2, ihr1, ihr2 
     424 
     425      ihr1 = (itime1/100) 
     426      ihr2 = (itime2/100) 
     427       
     428      imin1 = (itime1 - ihr1*100) + (60 * ihr1) 
     429      imin2 = (itime2 - ihr2*100) + (60 * ihr2) 
     430       
     431      ! Assume that itime2 is later, so wrap around midnight if necessary. 
     432      IF (imin2 < imin1) THEN 
     433         imin2 = imin2 + 24*60 
     434      END IF 
     435       
     436      difftime = imin2 - imin1 
     437       
     438   END FUNCTION difftime 
     439 
     440 
     441   INTEGER FUNCTION add_mins_to_time(itime1, imin_add) 
     442 
     443      ! Add number of minutes onto given time 
     444      ! Assumes time in HHMM or HMM or MM or M format 
     445      ! 
     446      ! Result is in HHMM format 
     447 
     448      IMPLICIT NONE 
     449      INTEGER, INTENT(IN) :: itime1,imin_add 
     450      INTEGER :: imin1, ihr1, imin2, ihr2 
     451 
     452      ihr1 = (itime1/100) 
     453       
     454      ! itime1 in minutes from previous midnight 
     455      imin1 = (itime1 - ihr1*100) + (60 * ihr1) 
     456       
     457      imin1 = imin1 + imin_add 
     458       
     459      ! Add 1day if time went nagative 
     460      IF (imin1 < 0) THEN 
     461         imin1 = imin1 + 24*60 
     462      END IF 
     463       
     464      ! Turn number of minutes back into HHMM 
     465      ihr2 = imin1/60 
     466      imin2 = imin1 - ihr2*60 
     467 
     468      DO 
     469         IF (ihr2<0) THEN 
     470            ihr2 = ihr2 + 24 
     471         ELSE IF (ihr2>=24) THEN 
     472            ihr2 = ihr2 - 24 
     473         END IF 
     474         IF ((ihr2>=0).OR.(ihr2<24)) EXIT 
     475      END DO 
     476 
     477      add_mins_to_time = ihr2*100 + imin2 
     478    
     479   END FUNCTION add_mins_to_time 
     480 
    381481 
    382482END MODULE date_utils 
Note: See TracChangeset for help on using the changeset viewer.