Changeset 2715 for trunk/NEMOGCM/EXTERNAL/AGRIF/AGRIF_FILES/modupdate.F
- Timestamp:
- 2011-03-30T17:58:35+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/EXTERNAL/AGRIF/AGRIF_FILES/modupdate.F
r2528 r2715 72 72 External :: procname 73 73 Optional :: procname 74 REAL, DIMENSION(lbound(child%var%array1,1): 75 & ubound(child%var%array1,1)), Target :: tab ! Results 74 REAL, DIMENSION( 75 & child%var%lb(1):child%var%ub(1) 76 & ), Target :: tab ! Result 76 77 C 77 78 C … … 86 87 C 87 88 C Values on the current grid used for the update 88 childtemp % var % array1 => tab89 C childtemp % var % array1 => tab 89 90 90 91 childtemp % var % lb = child % var % lb … … 139 140 140 141 REAL, DIMENSION( 141 & lbound(child%var%array2,1):ubound(child%var%array2,1),142 & lbound(child%var%array2,2):ubound(child%var%array2,2)),143 & Target :: tab ! Results142 & child%var%lb(1):child%var%ub(1), 143 & child%var%lb(2):child%var%ub(2) 144 & ), Target :: tab ! Result 144 145 C 145 146 C … … 154 155 C 155 156 C Values on the current grid used for the update 156 childtemp % var % array2 => tab157 C childtemp % var % array2 => tab 157 158 158 159 childtemp % var % lb = child % var % lb … … 203 204 204 205 REAL, DIMENSION( 205 & lbound(child%var%array3,1):ubound(child%var%array3,1),206 & lbound(child%var%array3,2):ubound(child%var%array3,2),207 & lbound(child%var%array3,3):ubound(child%var%array3,3)),208 & Target :: tab ! Results206 & child%var%lb(1):child%var%ub(1), 207 & child%var%lb(2):child%var%ub(2), 208 & child%var%lb(3):child%var%ub(3) 209 & ), Target :: tab ! Results 209 210 C 210 211 C … … 219 220 C 220 221 C Values on the current grid used for the update 221 childtemp % var % array3 => tab222 C childtemp % var % array3 => tab 222 223 223 224 childtemp % var % lb = child % var % lb … … 268 269 Optional :: procname 269 270 REAL, DIMENSION( 270 & lbound(child%var%array4,1):ubound(child%var%array4,1),271 & lbound(child%var%array4,2):ubound(child%var%array4,2),272 & lbound(child%var%array4,3):ubound(child%var%array4,3),273 & lbound(child%var%array4,4):ubound(child%var%array4,4)),274 & Target :: tab ! Results271 & child%var%lb(1):child%var%ub(1), 272 & child%var%lb(2):child%var%ub(2), 273 & child%var%lb(3):child%var%ub(3), 274 & child%var%lb(4):child%var%ub(4) 275 & ), Target :: tab ! Results 275 276 C 276 277 C … … 285 286 C 286 287 C Values on the current grid used for the update 287 childtemp % var % array4 => tab288 C childtemp % var % array4 => tab 288 289 289 290 childtemp % var % lb = child % var % lb … … 336 337 337 338 REAL, DIMENSION( 338 & lbound(child%var%array5,1):ubound(child%var%array5,1),339 & lbound(child%var%array5,2):ubound(child%var%array5,2),340 & lbound(child%var%array5,3):ubound(child%var%array5,3),341 & lbound(child%var%array5,4):ubound(child%var%array5,4),342 & lbound(child%var%array5,5):ubound(child%var%array5,5)),343 & Target :: tab ! Results339 & child%var%lb(1):child%var%ub(1), 340 & child%var%lb(2):child%var%ub(2), 341 & child%var%lb(3):child%var%ub(3), 342 & child%var%lb(4):child%var%ub(4), 343 & child%var%lb(5):child%var%ub(5) 344 & ), Target :: tab ! Results 344 345 C 345 346 C … … 354 355 C 355 356 C Values on the current grid used for the update 356 childtemp % var % array5 => tab357 C childtemp % var % array5 => tab 357 358 358 359 childtemp % var % lb = child % var % lb … … 401 402 ! are done on the fine grid 402 403 REAL, DIMENSION( 403 & lbound(child%var%array6,1):ubound(child%var%array6,1),404 & lbound(child%var%array6,2):ubound(child%var%array6,2),405 & lbound(child%var%array6,3):ubound(child%var%array6,3),406 & lbound(child%var%array6,4):ubound(child%var%array6,4),407 & lbound(child%var%array6,5):ubound(child%var%array6,5),408 & lbound(child%var%array6,6):ubound(child%var%array6,6)),409 & Target :: tab ! Results404 & child%var%lb(1):child%var%ub(1), 405 & child%var%lb(2):child%var%ub(2), 406 & child%var%lb(3):child%var%ub(3), 407 & child%var%lb(4):child%var%ub(4), 408 & child%var%lb(5):child%var%ub(5), 409 & child%var%lb(6):child%var%ub(6) 410 & ), Target :: tab ! Results 410 411 C 411 412 C … … 420 421 C 421 422 C Values on the current grid used for the update 422 childtemp % var % array6 => tab423 C childtemp % var % array6 => tab 423 424 424 425 childtemp % var % lb = child % var % lb … … 522 523 case('N') ! No space DIMENSION 523 524 C 524 select case (nbdim) 525 C 526 case(1) 527 nbtab_Child(n) = SIZE(child % var % array1,n) - 1 528 case(2) 529 nbtab_Child(n) = SIZE(child % var % array2,n) - 1 530 case(3) 531 nbtab_Child(n) = SIZE(child % var % array3,n) - 1 532 case(4) 533 nbtab_Child(n) = SIZE(child % var % array4,n) - 1 534 case(5) 535 nbtab_Child(n) = SIZE(child % var % array5,n) - 1 536 case(6) 537 nbtab_Child(n) = SIZE(child % var % array6,n) - 1 538 C 539 end select 525 526 nbtab_Child(n) = child % var % ub(n) - child % var % lb(n) 540 527 C 541 528 C No interpolation but only a copy of the values of the grid variable … … 560 547 endif 561 548 enddo 562 549 563 550 IF (present(procname)) THEN 564 551 … … 716 703 indtab(i,1,1) = indtab(i,1,1) - coeffraf 717 704 indtab(i,1,2) = indtab(i,1,2) - 1 718 IF ((TypeUpdate(i) .EQ. Agrif_Update_Full_Weighting) 719 & .AND.(mod(coeffraf,2) == 1)) THEN720 indtab(i,1,1) = indtab(i,1,1) - 1721 indtab(i,1,2) = indtab(i,1,2) + 1705 C at this point, indices are OK for an average 706 IF ((TypeUpdate(i) .EQ. Agrif_Update_Full_Weighting)) THEN 707 indtab(i,1,1) = indtab(i,1,1) - coeffraf/2 708 indtab(i,1,2) = indtab(i,1,2) + coeffraf/2 722 709 ENDIF 723 710 ENDIF … … 757 744 758 745 CALL MPI_ALLREDUCE(iminmaxg,lubglob,2*nbdim,MPI_INTEGER,MPI_MIN, 759 & MPI_COMM_ AGRIF,code)746 & MPI_COMM_WORLD,code) 760 747 761 748 lubglob(1:nbdim,2) = - lubglob(1:nbdim,2) … … 763 750 #endif 764 751 C 765 766 752 indtruetab(1:nbdim,1,1) = max(indtab(1:nbdim,1,1), 767 753 & lubglob(1:nbdim,1)) … … 771 757 C 772 758 C 773 774 759 IF (present(procname)) THEN 775 760 Call Agrif_UpdatenD … … 790 775 & posvartab_child,loctab_Child, 791 776 & nbdim) 792 ENDIF 777 ENDIF 793 778 C 794 779 C … … 899 884 indtab(i,2,2) = indtab(i,2,2) + coeffraf - 1 900 885 IF (TypeUpdate(i) .EQ. Agrif_Update_Full_Weighting) THEN 901 indtab(i,1,1) = indtab(i,1,1) - 1902 indtab(i,1,2) = indtab(i,1,2) + 1903 indtab(i,2,1) = indtab(i,2,1) - 1904 indtab(i,2,2) = indtab(i,2,2) + 1886 indtab(i,1,1) = indtab(i,1,1) - coeffraf/2 887 indtab(i,1,2) = indtab(i,1,2) + coeffraf/2 888 indtab(i,2,1) = indtab(i,2,1) - coeffraf/2 889 indtab(i,2,2) = indtab(i,2,2) + coeffraf/2 905 890 ENDIF 906 891 ENDIF … … 925 910 926 911 CALL MPI_ALLREDUCE(iminmaxg,lubglob,2*nbdim,MPI_INTEGER,MPI_MIN, 927 & MPI_COMM_ AGRIF,code)912 & MPI_COMM_WORLD,code) 928 913 929 914 lubglob(1:nbdim,2) = - lubglob(1:nbdim,2) … … 1209 1194 1210 1195 Call Agrif_nbdim_Full_VarEQreal(tempC%var,0.,nbdim) 1211 1212 1213 1196 1214 1197 IF (present(procname)) THEN … … 1287 1270 C 1288 1271 Call MPI_ALLGATHER(tab3,4*nbdim,MPI_INTEGER,tab4,4*nbdim, 1289 & MPI_INTEGER,MPI_COMM_ AGRIF,code)1272 & MPI_INTEGER,MPI_COMM_WORLD,code) 1290 1273 1291 1274 IF (.not.associated(tempCextend%var)) Allocate(tempCextend%var) … … 1300 1283 memberin1(1) = memberin 1301 1284 CALL MPI_ALLGATHER(memberin1,1,MPI_LOGICAL,memberinall, 1302 & 1,MPI_LOGICAL,MPI_COMM_ AGRIF,code)1285 & 1,MPI_LOGICAL,MPI_COMM_WORLD,code) 1303 1286 1304 1287 Call Get_External_Data_first(tab4t(:,:,1), … … 1419 1402 C 1420 1403 Call MPI_ALLGATHER(tab3,4*nbdim,MPI_INTEGER,tab4,4*nbdim, 1421 & MPI_INTEGER,MPI_COMM_ AGRIF,code)1404 & MPI_INTEGER,MPI_COMM_WORLD,code) 1422 1405 1423 1406 IF (.not.associated(tempPextend%var)) Allocate(tempPextend%var) … … 1432 1415 memberin1(1) = member 1433 1416 CALL MPI_ALLGATHER(memberin1,1,MPI_LOGICAL,memberinall2, 1434 & 1,MPI_LOGICAL,MPI_COMM_ AGRIF,code)1417 & 1,MPI_LOGICAL,MPI_COMM_WORLD,code) 1435 1418 1436 1419 Call Get_External_Data_first(tab5t(:,:,1), … … 1742 1725 REAL :: positionmin,positionmax 1743 1726 INTEGER :: imin,imax 1727 INTEGER :: coeffraf 1744 1728 #endif 1745 1729 C … … 1770 1754 ENDIF 1771 1755 ELSE 1756 IF (TypeUpdate(i).NE.Agrif_Update_Full_Weighting) THEN 1772 1757 positionmin = positionmin - ds_Parent(i)/2. 1773 IF (TypeUpdate(i) .EQ. Agrif_Update_Full_Weighting) THEN 1774 positionmin = positionmin - ds_Child(i) 1758 ELSE 1759 coeffraf = nint(ds_Parent(i)/ds_Child(i)) 1760 if (mod(coeffraf,2) == 1) then 1761 positionmin = positionmin - (ds_Parent(i)-ds_Child(i)) 1762 else 1763 positionmin = positionmin - (ds_Parent(i)-ds_Child(i)) 1764 & -ds_Child(i)/2. 1765 endif 1775 1766 ENDIF 1776 1767 ENDIF … … 1780 1771 1781 1772 positionmin = s_Child(i) + (imin - 1782 & 1773 & pttab_Child(i)) * ds_Child(i) 1783 1774 1784 1775 pttruetabwhole(i) = imin … … 1794 1785 ENDIF 1795 1786 ELSE 1787 IF (TypeUpdate(i).NE.Agrif_Update_Full_Weighting) THEN 1796 1788 positionmax = positionmax + ds_Parent(i)/2. 1797 IF (TypeUpdate(i) .EQ. Agrif_Update_Full_Weighting) THEN 1798 positionmax = positionmax + ds_Child(i) 1789 ELSE 1790 coeffraf = nint(ds_Parent(i)/ds_Child(i)) 1791 if (mod(coeffraf,2) == 1) then 1792 positionmax = positionmax + (ds_Parent(i)-ds_Child(i)) 1793 else 1794 positionmax = positionmax + (ds_Parent(i)-ds_Child(i)) 1795 & + ds_Child(i)/2. 1796 endif 1797 1799 1798 ENDIF 1800 1799 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.