Changeset 779 for trunk/AGRIF/AGRIF_FILES/modinterp.F
- Timestamp:
- 2007-12-22T18:04:17+01:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AGRIF/AGRIF_FILES/modinterp.F
r662 r779 42 42 C 43 43 IMPLICIT NONE 44 logical, private:: precomputedone(7) = .FALSE. 44 45 C 45 46 CONTAINS … … 1351 1352 & s_parent(nbdim),s_child(nbdim), 1352 1353 & ds_parent(nbdim),ds_child(nbdim),coeffraf) 1354 1353 1355 C 1354 1356 Return … … 1399 1401 INTEGER i,j 1400 1402 INTEGER :: coeffraf 1403 REAL , DIMENSION( 1404 & pttab_child(nbdim):petab_child(nbdim), 1405 & pttab_child(nbdim-1):petab_child(nbdim-1) 1406 & ) :: tabout_trsp 1407 REAL, DIMENSION(indmin(nbdim):indmax(nbdim), 1408 & pttab_child(nbdim-1):petab_child(nbdim-1)) :: tabtemp_trsp 1409 1401 1410 C 1402 1411 C … … 1405 1414 C Commentaire perso : nbdim vaut toujours 2 ici. 1406 1415 C 1416 coeffraf = nint ( ds_parent(1) / ds_child(1) ) 1417 IF((TypeInterp(1) == Agrif_Linear) .AND. (coeffraf /= 1 ) )THEN 1418 1419 !---CDIR NEXPAND 1420 IF(.NOT. precomputedone(1) ) call linear1Dprecompute2D( 1421 & indmax(2)-indmin(2)+1, 1422 & indmax(1)-indmin(1)+1, 1423 & petab_child(1)-pttab_child(1)+1, 1424 & s_parent(1),s_child(1),ds_parent(1),ds_child(1),1) 1425 !---CDIR NEXPAND 1426 call linear1daftercompute(tabin,tabtemp, 1427 & size(tabin), size(tabtemp), 1428 & s_parent(1),s_child(1),ds_parent(1),ds_child(1),1) 1429 1430 ELSEIF((TypeInterp(1) == Agrif_PPM) .AND. (coeffraf /= 1 ) )THEN 1431 !---CDIR NEXPAND 1432 IF(.NOT. precomputedone(1) ) call ppm1Dprecompute2D( 1433 & indmax(2)-indmin(2)+1, 1434 & indmax(1)-indmin(1)+1, 1435 & petab_child(1)-pttab_child(1)+1, 1436 & s_parent(1),s_child(1),ds_parent(1),ds_child(1),1) 1437 !---CDIR NEXPAND 1438 call ppm1daftercompute(tabin,tabtemp, 1439 & size(tabin), size(tabtemp), 1440 & s_parent(1),s_child(1),ds_parent(1),ds_child(1),1) 1441 1442 ELSE 1443 1407 1444 do j = indmin(nbdim),indmax(nbdim) 1408 1445 C 1446 !---CDIR NEXPAND 1409 1447 Call Agrif_Interp_1D_recursive(TypeInterp(1), 1410 1448 & tabin(indmin(nbdim-1):indmax(nbdim-1),j), … … 1416 1454 C 1417 1455 enddo 1418 C 1456 ENDIF 1457 1419 1458 coeffraf = nint(ds_parent(nbdim)/ds_child(nbdim)) 1420 1459 1460 tabtemp_trsp = TRANSPOSE(tabtemp) 1461 1462 IF((TypeInterp(2) == Agrif_Linear) .AND. (coeffraf /= 1 ) )THEN 1463 1464 !---CDIR NEXPAND 1465 IF(.NOT. precomputedone(2) ) call linear1Dprecompute2D( 1466 & petab_child(1)-pttab_child(1)+1, 1467 & indmax(2)-indmin(2)+1, 1468 & petab_child(2)-pttab_child(2)+1, 1469 & s_parent(2),s_child(2),ds_parent(2),ds_child(2),2) 1470 !---CDIR NEXPAND 1471 call linear1daftercompute(tabtemp_trsp,tabout_trsp, 1472 & size(tabtemp_trsp), size(tabout_trsp), 1473 & s_parent(2),s_child(2),ds_parent(2),ds_child(2),2) 1474 1475 ELSEIF((TypeInterp(2) == Agrif_PPM) .AND. (coeffraf /= 1 ) )THEN 1476 1477 !---CDIR NEXPAND 1478 IF(.NOT. precomputedone(1) )call ppm1Dprecompute2D( 1479 & petab_child(1)-pttab_child(1)+1, 1480 & indmax(2)-indmin(2)+1, 1481 & petab_child(2)-pttab_child(2)+1, 1482 & s_parent(2),s_child(2),ds_parent(2),ds_child(2),2) 1483 !---CDIR NEXPAND 1484 call ppm1daftercompute(tabtemp_trsp,tabout_trsp, 1485 & size(tabtemp_trsp), size(tabout_trsp), 1486 & s_parent(2),s_child(2),ds_parent(2),ds_child(2),2) 1487 1488 ELSE 1421 1489 do i=pttab_child(nbdim-1),petab_child(nbdim-1) 1422 1490 C 1491 !---CDIR NEXPAND 1423 1492 Call Agrif_InterpBase(TypeInterp(2), 1424 & tabtemp (i,indmin(nbdim):indmax(nbdim)),1425 & tabout(i,pttab_child(nbdim):petab_child(nbdim)),1493 & tabtemp_trsp(indmin(nbdim):indmax(nbdim),i), 1494 & tabout_trsp(pttab_child(nbdim):petab_child(nbdim),i), 1426 1495 & indmin(nbdim),indmax(nbdim), 1427 1496 & pttab_child(nbdim),petab_child(nbdim), 1428 1497 & s_parent(nbdim),s_child(nbdim), 1429 1498 & ds_parent(nbdim),ds_child(nbdim),coeffraf) 1499 1430 1500 C 1431 1501 enddo 1502 ENDIF 1503 1504 tabout = TRANSPOSE(tabout_trsp) 1432 1505 C 1433 1506 Return … … 1476 1549 C 1477 1550 C 1551 coeffraf = nint ( ds_parent(1) / ds_child(1) ) 1552 IF((TypeInterp(1) == Agrif_Linear) .AND. (coeffraf/=1))THEN 1553 Call linear1Dprecompute2D( 1554 & indmax(2)-indmin(2)+1, 1555 & indmax(1)-indmin(1)+1, 1556 & petab_child(1)-pttab_child(1)+1, 1557 & s_parent(1),s_child(1),ds_parent(1),ds_child(1),1) 1558 precomputedone(1) = .TRUE. 1559 ELSEIF((TypeInterp(1) == Agrif_PPM) .AND. (coeffraf/=1))THEN 1560 Call ppm1Dprecompute2D( 1561 & indmax(2)-indmin(2)+1, 1562 & indmax(1)-indmin(1)+1, 1563 & petab_child(1)-pttab_child(1)+1, 1564 & s_parent(1),s_child(1),ds_parent(1),ds_child(1),1) 1565 precomputedone(1) = .TRUE. 1566 ENDIF 1567 1568 coeffraf = nint ( ds_parent(2) / ds_child(2) ) 1569 IF((TypeInterp(2) == Agrif_Linear) .AND. (coeffraf/=1)) THEN 1570 Call linear1Dprecompute2D( 1571 & petab_child(1)-pttab_child(1)+1, 1572 & indmax(2)-indmin(2)+1, 1573 & petab_child(2)-pttab_child(2)+1, 1574 & s_parent(2),s_child(2),ds_parent(2),ds_child(2),2) 1575 precomputedone(2) = .TRUE. 1576 ELSEIF((TypeInterp(2) == Agrif_PPM) .AND. (coeffraf/=1)) THEN 1577 Call ppm1Dprecompute2D( 1578 & petab_child(1)-pttab_child(1)+1, 1579 & indmax(2)-indmin(2)+1, 1580 & petab_child(2)-pttab_child(2)+1, 1581 & s_parent(2),s_child(2),ds_parent(2),ds_child(2),2) 1582 precomputedone(2) = .TRUE. 1583 ENDIF 1584 1478 1585 do k = indmin(nbdim),indmax(nbdim) 1479 1586 C … … 1490 1597 enddo 1491 1598 1599 precomputedone(1) = .FALSE. 1600 precomputedone(2) = .FALSE. 1601 coeffraf = nint ( ds_parent(3) / ds_child(3) ) 1492 1602 1493 1603 Call Agrif_Compute_nbdim_interp(s_parent(nbdim),s_child(nbdim), … … 1851 1961 ELSEIF (TYPEinterp .EQ. AGRIF_LINEAR) then 1852 1962 C 1853 C Linear interpolation 1963 C Linear interpolation 1964 1854 1965 Call linear1D 1855 1966 & (parenttab,childtab, … … 1857 1968 & s_parent,s_child,ds_parent,ds_child) 1858 1969 C 1970 elseif ( TYPEinterp .EQ. AGRIF_PPM ) then 1971 1972 Call ppm1D 1973 & (parenttab,childtab, 1974 & indmax-indmin+1,petab_child-pttab_child+1, 1975 & s_parent,s_child,ds_parent,ds_child) 1976 C 1977 1859 1978 elseif (TYPEinterp .EQ. AGRIF_LAGRANGE) then 1860 1979 C … … 1906 2025 & s_parent,s_child,ds_parent,ds_child) 1907 2026 C 1908 elseif ( TYPEinterp .EQ. AGRIF_PPM ) then1909 Call ppm1D1910 & (parenttab,childtab,1911 & indmax-indmin+1,petab_child-pttab_child+1,1912 & s_parent,s_child,ds_parent,ds_child)1913 C1914 2027 endif 1915 2028 C
Note: See TracChangeset
for help on using the changeset viewer.