Custom Query (964 matches)
Results (667 - 669 of 964)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#628 | Done | Matlab scripts to process sponges and nudging inverse time scales | ||
Description |
Two new Matlab scripts were added to process sponges and nudging inverse time scales. See src:ticket:627 for detailed documentation.
|
|||
#629 | Fixed | Corrected typo when reporting biology parameters | ||
Description |
Corrected typo when reporting the LtracerCLM and LnudgeTCLM logical switches in ecosim_inp.h, fennel_inp.h, nemuro_inp.h, npzd_Franks_inp.h, npzd_Powell_inp.h, and npzd_iron_inp.h. An IF-statement was not terminated correctly. We need to have instead: DO itrc=1,NBT i=idbio(itrc) IF (LtracerCLM(i,ng)) THEN WRITE (out,110) LtracerCLM(i,ng), 'LtracerCLM', i, & & 'Turning ON processing of climatology tracer ', i, & & TRIM(Vname(1,idTvar(i))) ELSE WRITE (out,110) LtracerCLM(i,ng), 'LtracerCLM', i, & & 'Turning OFF processing of climatology tracer ', i, & & TRIM(Vname(1,idTvar(i))) END IF END DO DO itrc=1,NBT i=idbio(itrc) IF (LnudgeTCLM(i,ng)) THEN WRITE (out,110) LnudgeTCLM(i,ng), 'LnudgeTCLM', i, & & 'Turning ON nudging of climatology tracer ', i, & & TRIM(Vname(1,idTvar(i))) ELSE WRITE (out,110) LnudgeTCLM(i,ng), 'LnudgeTCLM', i, & & 'Turning OFF nudging of climatology tracer ', i, & & TRIM(Vname(1,idTvar(i))) END IF END DO |
|||
#630 | Fixed | IMPORTANT: Corrected shared-memory bug | ||
Description |
A shared-memory bug was corrected for variables ntstart(ng), ntfirst(ng), and ntend(ng). Because of nesting, these variables were declared as THREADPRIVATE. However, this introduced a parallel bug when calling get_state to read initial conditions or restart fields. The routine get_state is only executed by the master thread. As a consequence, the above variables are only initialized in the master thread and their values are unknown to other shared-memory threads. Similar problem occurs for the time(ng) variable. The solution is to remove the THREADPRIVATE clause for such variables and initialize them by master thread as follows: !$OMP MASTER ntstart(ng)=INT((time(ng)-dstart*day2sec)/dt(ng))+1 ntend(ng)=ntimes(ng) ntfirst(ng)=ntstart(ng) !$OMP END MASTER !$OMP BARRIER and introduce a new scalar variable io_time to update the value of time(ng) for the other shared-memory threads after initialization or restart: #ifdef INI_FILE ! ! Read in initial conditions from initial NetCDF file. ! DO ng=1,Ngrids !$OMP MASTER CALL get_state (ng, iNLM, 1, INI(ng)%name, & & IniRec(ng), Tindex(ng)) !$OMP END MASTER # ifdef DISTRIBUTE CALL mp_bcasti (ng, iNLM, exit_flag) # endif !$OMP BARRIER IF (exit_flag.ne.NoError) RETURN time(ng)=io_time ! needed for shared-memory END DO #else ! ! If restart, read in initial conditions restart NetCDF file. ! DO ng=1,Ngrids IF (nrrec(ng).ne.0) THEN !$OMP MASTER CALL get_state (ng, 0, 1, INI(ng)%name, & & IniRec(ng), Tindex(ng)) !$OMP END MASTER # ifdef DISTRIBUTE CALL mp_bcasti (ng, iNLM, exit_flag) # endif !$OMP BARRIER IF (exit_flag.ne.NoError) RETURN time(ng)=io_time ! needed for shared-memory END IF END DO #endif Many thanks to Mark Hadfield for bringing this to my attention. This was also reported by Mitsuhiro Kawase. |