Custom Query (964 matches)
Results (406 - 408 of 964)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#346 | Fixed | Corrected parallel bugs in ana_psource.h | ||
Description |
The analytical specification of point sources (TS_PSOURCE, UV_PSOURCE, and Q_PSOURCE), in ana_psource.h, are extremely tricky in ROMS parallel applications. This is due to ROMS coarse-grain parallel design that support serial, serial with tile partitions, parallel shared-memory (OpenMP), and parallel distributed-memory (MPI). It requires full knowledge of ROMS framework design and parallelism to modify this ana_psource.h. So please look at the corrected routine and study it. I highly recommend you to understand first what it is involve before attempting to modidy this routine. The routine ana_psource.h was previously designed for serial applications without tile partitions. The example tests cases were very simple and small and didn't required running in parallel. Nowadays, there is an increased number of users using this routine for their own applications. So I decided to correct this routine for you to have an idea of what it is involved. Still the best way to specify the point sources (river runoff) in ROMS is from an input (river) forcing NetCDF. Then, ROMS will take care of all the parallel issues internally. |
|||
#349 | Fixed | 4DVar unbalanced error covariance standard deviation scripts | ||
Description |
Added a new directory matlab/4dvar in the Matlab scripts repository containing several scripts to compute the unbalanced standard deviation used to scale 4DVar error covariance. This scripts use the balance operator (K-1) to compute the balanced and unbalanced components. Currently, this directory has the following scripts (see Contents.m): % % ROMS 4DVar data assimilation Matlab scripts % =========================================== % % This package contains several generic Matlab scripts to process % data for ROMS 4DVar data assimilation algorithms. % % % Error Covariance Matrix: % % average: - Computes the time average of requested NetCDF variable. % variance: - Computes the variance of requested NetCDF variable from % its specified time mean. % % Error Covaraince Matrix Balance Operator: % % balance_4dvar - Computes 4DVar balance operator. % biconj - Biconjugate gradient solver for the SSH elliptic % equation. % ini_balance - Initializes balance operator structure array. % It sets internal parameters, reads needed grid % metrics and computes several quantities. % lateral_obc - Sets lateral boundary conditions for a 2D or 3D % field. % rho_balance - Computes balanced density anomaly using a linear % equation of state. % s_balance - Given a temperature anomaly, deltaT=T-Tavg, it % computes balanced salinity anomaly using a T-S % empirical formula. % uv_balance - Computes balanced, baroclinic U- and V-momentum % anomalies (m/s) using the geostrophic balance. % zeta_balance - Computes balanced, baroclinic free-surface anomaly % by solving an elliptical equation OR integrating % the hydrostatic equation from surface to bottom. % % Error Covariance Matrix NetCDF file: % % c_std - Creates 4DVar standard deviation NetCDF file. % I also added a new script matlab/utility/nc_getatt.m to read a global or variable attribute from a NetCDF file. I modified matlab/utility/nc_read.m to have an additional argument, FillValue, to pass the desired value to use when the _FillValue attribute is found in a variable. The default is to replace its value with zero. In some circumstances, like plotting, it is advantageous to set FillValue=NaN to visualize better the land/sea masking or the missing data. Many thanks to Andy Moore for his great help in coding and testing the 4DVar balance operator in ROMS. |
|||
#350 | Fixed | set_data: subscript out of range | ||
Description |
This code: 726 IF (SOUTH_WEST_TEST) THEN 727 # ifdef WEST_FSOBC 728 DO j=JLB,JUB 729 cff=Dcrit(ng)-GRID(ng)%h(0,j) 730 IF (BOUNDARY(ng)%zeta_west(j).le.cff) THEN 731 BOUNDARY(ng)%zeta_west(j)=cff 732 END IF 733 END DO 734 # endif becomes: 292 IF (.true.) THEN 293 DO j=JLB,JUB 294 cff=Dcrit(ng)-GRID(ng)%h(0,j) 295 IF (BOUNDARY(ng)%zeta_west(j).le.cff) THEN 296 BOUNDARY(ng)%zeta_west(j)=cff 297 END IF 298 END DO running in parallel, I get: 0: Subscript out of range for array grid%h (set_data.f90: 294) subscript=0, lower bound=159, upper bound=242, dimension=2 0: Subscript out of range for array grid%h (set_data.f90: 294) subscript=83, lower bound=0, upper bound=82, dimension=2 0: Subscript out of range for array grid%h (set_data.f90: 294) subscript=0, lower bound=559, upper bound=642, dimension=2 and so on. |