Custom Query (2547 matches)
Results (46 - 48 of 2547)
Ticket | Resolution | Summary | Owner | Reporter |
---|---|---|---|---|
#1831 | fixed | Adding the ability to read character attributes using iom_getatt | acc | acc |
Description |
Contextiom_getatt is a generic routine that currently (in dev_merge_2016 branch) accepts integer and real arguments. The interface for this is done correctly in iom.F90 but at the next level (iom_nf90.F90) one routine satisfies both uses with optional arguments and complicated logic. This is not easily extended for the additional case of character attributes. ChangesThe best solution is to introduce a proper generic routine into iom_nf90.F90. At the same time the option to read either file or variable attributes can be added for all types (currently it is only available for real attributes). The user will see only one routine: iom_getatt( fid, attr_name, retvar, var_name) where varname is optional (if omitted a file attribute is looked for), and retvar can be either integer, real or a character string. Inside iom.F90, iom_getatt is an interface to three routines: iom_g0d_iatt, iom_g0d_ratt and iom_g0d_catt. Each of these calls a generic routine: iom_nf90_getatt which is, in turn, an interface to three routines: iom_nf90_iatt, iom_nf90_ratt and iom_nf90_catt which are defined in iom_nf90.F90. |
|||
#1852 | fixed | Inconsistent halo values across restarts in SETTE tests | acc | acc |
Description |
ContextAttempts to derive a SETTE test for SAS configurations by comparing restarts in restart ability tests has revealed a minor issue with sbc_tsc_b values differing between continuous runs and restarted runs covering the same period. Differences are found in halo regions which have no impact on results but invalidate the proposed new test. AnalysisThe cause has been traced to the initialisation carried out in trasbc.F90. Currently the code is (in shorter, pre-OMP form): IF( kt == nit000 ) THEN !* 1st time-step IF( ln_rstart .AND. & ! Restart: read in restart file & iom_varid( numror, 'sbc_hc_b', ldstop = .FALSE. ) > 0 ) THEN IF(lwp) WRITE(numout,*) ' nit000-1 sbc tracer content field read in the restart file' zfact = 0.5_wp CALL iom_get( numror, jpdom_autoglo, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem) ) ! before heat content sbc trend CALL iom_get( numror, jpdom_autoglo, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal) ) ! before salt content sbc trend ELSE ! No restart or restart not found: Euler forward time stepping zfact = 1._wp sbc_tsc(:,:,:) = 0._wp sbc_tsc_b(:,:,:) = 0._wp ENDIF ELSE !* other time-steps: swap of forcing fields zfact = 0.5_wp sbc_tsc_b(:,:,:) = sbc_tsc(:,:,:) ENDIF ! !== Now sbc tracer content fields ==! DO jj = 2, jpj DO ji = fs_2, fs_jpim1 ! vector opt. sbc_tsc(ji,jj,jp_tem) = r1_rau0_rcp * qns(ji,jj) ! non solar heat flux sbc_tsc(ji,jj,jp_sal) = r1_rau0 * sfx(ji,jj) ! salt flux due to freezing/melting END DO END DO
sbc_tsc_b(:,:,:) = sbc_tsc(:,:,:) instruction on the next time step. Thus the unused haloes can (and do) contain arbitrary values unless unset values are automatically set to zero by the compiler. RecommendationThe simplest solution is to introduce a: sbc_tsc(:,:,:) = 0._wp immediately before the first call to iom_get. Of course for OMP operability what actually needs to be inserted is: DO jn = 1, jpts !$OMP PARALLEL DO schedule(static) private(jj, ji) DO jj = 1, jpj DO ji = 1, jpi sbc_tsc(ji,jj,jn) = 0._wp ! needed just to ensure haloes are consistent across restarts END DO END DO END DO |
|||
#1915 | fixed | ROBUST-8_AndrewC-MPP_no_ghost development branch | acc | acc |
Description |
Context
Implementation
|