Changeset 1200 for trunk/AGRIF/AGRIF_FILES/modbcfunction.F
- Timestamp:
- 2008-09-24T15:05:20+02:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AGRIF/AGRIF_FILES/modbcfunction.F
r779 r1200 256 256 C 257 257 INTEGER :: tabvarsindic ! indice of the variable in tabvars 258 TYPE(Agrif_PVariable),Pointer ::tabvars 259 260 258 261 C 259 262 C … … 261 264 C 262 265 C 266 267 if (tabvarsindic <=0) then 268 tabvars => Agrif_Search_Variable(Agrif_Curgrid,-tabvarsindic) 269 else 270 tabvars=>Agrif_Curgrid % tabvars(tabvarsindic) 271 endif 272 263 273 if (Agrif_Curgrid % fixedrank .NE. 0) then 264 IF (.Not.Associated(Agrif_Curgrid%tabvars(tabvarsindic)%var 265 & % interpIndex)) THEN 266 Allocate(Agrif_Curgrid%tabvars(tabvarsindic)%var % interpIndex) 267 Agrif_Curgrid%tabvars(tabvarsindic)%var % interpIndex = -1 268 269 Allocate( 270 & Agrif_Curgrid%tabvars(tabvarsindic)%var % oldvalues2D(2,1)) 271 Agrif_Curgrid%tabvars(tabvarsindic)%var % oldvalues2D = 0. 274 IF (.Not.Associated(tabvars%var% interpIndex)) THEN 275 Allocate(tabvars%var % interpIndex) 276 tabvars%var % interpIndex = -1 277 278 Allocate(tabvars%var % oldvalues2D(2,1)) 279 tabvars%var % oldvalues2D = 0. 272 280 ENDIF 273 281 if ( PRESENT(Interpolationshouldbemade) ) then 274 Agrif_Curgrid%tabvars(tabvarsindic)%var %282 tabvars%var % 275 283 & Interpolationshouldbemade = Interpolationshouldbemade 276 284 endif … … 278 286 endif 279 287 C 280 Agrif_Curgrid%tabvars(tabvarsindic)%var % bcinf = point(1)281 Agrif_Curgrid%tabvars(tabvarsindic)%var % bcsup = point(2)288 tabvars%var % bcinf = point(1) 289 tabvars%var % bcsup = point(2) 282 290 C 283 291 End Subroutine Agrif_Set_bc … … 346 354 C 347 355 INTEGER :: tabvarsindic ! indice of the variable in tabvars 356 TYPE(Agrif_PVariable),Pointer ::tabvars 357 358 348 359 C 349 360 C 350 361 C Begin 351 362 C 352 Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp = 363 C 364 365 if (tabvarsindic <=0) then 366 tabvars => Agrif_Search_Variable(Agrif_Mygrid,-tabvarsindic) 367 else 368 tabvars=>Agrif_Mygrid % tabvars(tabvarsindic) 369 endif 370 C 371 tabvars% var % bctypeinterp = 353 372 & Agrif_Constant 354 373 IF (present(interp)) THEN 355 Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp =374 tabvars% var % bctypeinterp = 356 375 & interp 357 376 ENDIF 358 377 IF (present(interp1)) THEN 359 Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp(1:2,1) =378 tabvars% var % bctypeinterp(1:2,1) = 360 379 & interp1 361 380 ENDIF 362 381 IF (present(interp11)) THEN 363 Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp(1,1) =382 tabvars% var % bctypeinterp(1,1) = 364 383 & interp11 365 384 ENDIF 366 385 IF (present(interp12)) THEN 367 Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp(1,2) =386 tabvars% var % bctypeinterp(1,2) = 368 387 & interp12 369 388 ENDIF 370 389 IF (present(interp2)) THEN 371 Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp(1:2,2) =390 tabvars% var % bctypeinterp(1:2,2) = 372 391 & interp2 373 392 ENDIF 374 393 IF (present(interp21)) THEN 375 Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp(2,1) =394 tabvars% var % bctypeinterp(2,1) = 376 395 & interp21 377 396 ENDIF 378 397 IF (present(interp22)) THEN 379 Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp(2,2) =398 tabvars% var % bctypeinterp(2,2) = 380 399 & interp22 381 400 ENDIF 382 401 IF (present(interp3)) THEN 383 Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp(1:2,3) =402 tabvars% var % bctypeinterp(1:2,3) = 384 403 & interp3 385 404 ENDIF … … 507 526 CCC Subroutine Agrif_Init_variable0d 508 527 C ************************************************************************** 509 Subroutine Agrif_Init_variable0d(tabvarsindic0,tabvarsindic) 528 Subroutine Agrif_Init_variable0d(tabvarsindic0,tabvarsindic, 529 & procname) 510 530 511 531 INTEGER :: tabvarsindic0 ! indice of the variable in tabvars 512 532 INTEGER :: tabvarsindic ! indice of the variable in tabvars 533 External :: procname 534 Optional :: procname 513 535 C 514 536 if (Agrif_Root()) Return 515 537 C 538 if (present(procname)) then 539 CALL Agrif_Interp_variable(tabvarsindic0,tabvarsindic,procname) 540 CALL Agrif_Bc_variable(tabvarsindic0,tabvarsindic,1.,procname) 541 else 516 542 CALL Agrif_Interp_variable(tabvarsindic0,tabvarsindic) 517 543 CALL Agrif_Bc_variable(tabvarsindic0,tabvarsindic,1.) 544 endif 518 545 519 546 End Subroutine Agrif_Init_variable0d … … 523 550 CCC Subroutine Agrif_Init_variable1d 524 551 C ************************************************************************** 525 Subroutine Agrif_Init_variable1d(q,tabvarsindic )552 Subroutine Agrif_Init_variable1d(q,tabvarsindic,procname) 526 553 527 554 REAL, DIMENSION(:) :: q 528 555 INTEGER :: tabvarsindic ! indice of the variable in tabvars 556 External :: procname 557 Optional :: procname 558 529 559 C 530 560 if (Agrif_Root()) Return 531 561 C 562 if (present(procname)) then 563 CALL Agrif_Interp_variable(q,tabvarsindic,procname) 564 CALL Agrif_Bc_variable(q,tabvarsindic,1.,procname) 565 else 532 566 CALL Agrif_Interp_variable(q,tabvarsindic) 533 567 CALL Agrif_Bc_variable(q,tabvarsindic,1.) 568 endif 534 569 535 570 End Subroutine Agrif_Init_variable1d … … 538 573 CCC Subroutine Agrif_Init_variable2d 539 574 C ************************************************************************** 540 Subroutine Agrif_Init_variable2d(q,tabvarsindic )575 Subroutine Agrif_Init_variable2d(q,tabvarsindic,procname) 541 576 542 577 REAL, DIMENSION(:,:) :: q 543 578 INTEGER :: tabvarsindic ! indice of the variable in tabvars 579 External :: procname 580 Optional :: procname 581 544 582 C 545 583 if (Agrif_Root()) Return 546 584 C 585 if (present(procname)) then 586 CALL Agrif_Interp_variable(q,tabvarsindic,procname) 587 CALL Agrif_Bc_variable(q,tabvarsindic,1.,procname) 588 else 547 589 CALL Agrif_Interp_variable(q,tabvarsindic) 548 590 CALL Agrif_Bc_variable(q,tabvarsindic,1.) 591 endif 592 549 593 550 594 End Subroutine Agrif_Init_variable2d … … 554 598 CCC Subroutine Agrif_Init_variable3d 555 599 C ************************************************************************** 556 Subroutine Agrif_Init_variable3d(q,tabvarsindic )600 Subroutine Agrif_Init_variable3d(q,tabvarsindic,procname) 557 601 558 602 REAL, DIMENSION(:,:,:) :: q 559 603 INTEGER :: tabvarsindic ! indice of the variable in tabvars 604 External :: procname 605 Optional :: procname 560 606 C 561 607 if (Agrif_Root()) Return 562 608 C 609 if (present(procname)) then 610 CALL Agrif_Interp_variable(q,tabvarsindic,procname) 611 CALL Agrif_Bc_variable(q,tabvarsindic,1.,procname) 612 else 563 613 CALL Agrif_Interp_variable(q,tabvarsindic) 564 614 CALL Agrif_Bc_variable(q,tabvarsindic,1.) 615 endif 616 565 617 C 566 618 End Subroutine Agrif_Init_variable3d 619 C 620 C 621 C ************************************************************************** 622 CCC Subroutine Agrif_Init_variable4d 623 C ************************************************************************** 624 Subroutine Agrif_Init_variable4d(q,tabvarsindic,procname) 625 626 REAL, DIMENSION(:,:,:,:) :: q 627 INTEGER :: tabvarsindic ! indice of the variable in tabvars 628 External :: procname 629 Optional :: procname 630 C 631 if (Agrif_Root()) Return 632 C 633 if (present(procname)) then 634 CALL Agrif_Interp_variable(q,tabvarsindic,procname) 635 CALL Agrif_Bc_variable(q,tabvarsindic,1.,procname) 636 else 637 CALL Agrif_Interp_variable(q,tabvarsindic) 638 CALL Agrif_Bc_variable(q,tabvarsindic,1.) 639 endif 640 641 C 642 End Subroutine Agrif_Init_variable4d 567 643 C 568 644 C … … 713 789 C 714 790 C 715 C716 791 C ************************************************************************** 717 792 CCC Subroutine Agrif_Bc_variable1d 718 793 C ************************************************************************** 719 Subroutine Agrif_Bc_variable1d(q,tabvarsindic,calledweight) 720 721 REAL , DIMENSION(:) :: q 794 Subroutine Agrif_Bc_variable1d(q,tabvarsindic,calledweight, 795 & procname) 796 797 REAL , Dimension(:) :: q 798 External :: procname 799 Optional :: procname 722 800 INTEGER :: tabvarsindic ! indice of the variable in tabvars 723 801 C … … 725 803 REAL :: weight 726 804 LOGICAL :: pweight 727 C 805 TYPE(Agrif_PVariable),Pointer ::tabvars,parenttabvars,roottabvars 806 C 807 C 808 C 809 If (Agrif_Root()) Return 810 728 811 if ( PRESENT(calledweight) ) then 729 812 weight=calledweight … … 733 816 pweight = .FALSE. 734 817 endif 735 C 736 C 737 if (Agrif_Root()) Return 738 818 819 if (tabvarsindic <=0) then 820 tabvars => Agrif_Search_Variable(Agrif_Curgrid,-tabvarsindic) 821 parenttabvars => tabvars%parent_var 822 roottabvars => Agrif_Search_Variable(Agrif_Mygrid,-tabvarsindic) 823 else 824 tabvars=>Agrif_Curgrid % tabvars(tabvarsindic) 825 parenttabvars => Agrif_Curgrid % parent % tabvars(tabvarsindic) 826 roottabvars => Agrif_Mygrid % tabvars(tabvarsindic) 827 endif 828 829 IF (present(procname)) THEN 739 830 Call Agrif_Interp_Bc_1D( 740 & Agrif_Mygrid % tabvars(tabvarsindic) % var % bctypeinterp, 741 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 742 & Agrif_Curgrid % tabvars(tabvarsindic), 743 & q, 744 & Agrif_Curgrid % tabvars(tabvarsindic) % var % bcinf, 745 & Agrif_Curgrid % tabvars(tabvarsindic) % var % bcsup, 746 & weight, 747 & pweight) 748 End Subroutine Agrif_Bc_variable1d 749 C 750 C 751 CC 831 & roottabvars % var % bctypeinterp, 832 & parenttabvars, 833 & tabvars,q, 834 & tabvars % var % bcinf, 835 & tabvars % var % bcsup, 836 & weight,pweight,procname) 837 ELSE 838 Call Agrif_Interp_Bc_1D( 839 & roottabvars % var % bctypeinterp, 840 & parenttabvars, 841 & tabvars,q, 842 & tabvars % var % bcinf, 843 & tabvars % var % bcsup, 844 & weight,pweight) 845 ENDIF 846 End Subroutine Agrif_Bc_variable1d 847 752 848 C 753 849 C ************************************************************************** … … 755 851 C ************************************************************************** 756 852 Subroutine Agrif_Bc_variable2d(q,tabvarsindic,calledweight, 757 & 758 759 REAL , D IMENSION(:,:) :: q853 & procname) 854 855 REAL , Dimension(:,:) :: q 760 856 External :: procname 761 857 Optional :: procname … … 765 861 REAL :: weight 766 862 LOGICAL :: pweight 767 C 863 TYPE(Agrif_PVariable),Pointer ::tabvars,parenttabvars,roottabvars 864 C 865 C 866 C 867 If (Agrif_Root()) Return 868 768 869 if ( PRESENT(calledweight) ) then 769 weight=calledweight 870 weight=calledweight 770 871 pweight = .TRUE. 771 872 else … … 773 874 pweight = .FALSE. 774 875 endif 775 C 776 C 777 778 if (Agrif_Root()) Return 876 877 if (tabvarsindic <=0) then 878 tabvars => Agrif_Search_Variable(Agrif_Curgrid,-tabvarsindic) 879 parenttabvars => tabvars%parent_var 880 roottabvars => Agrif_Search_Variable(Agrif_Mygrid,-tabvarsindic) 881 else 882 tabvars=>Agrif_Curgrid % tabvars(tabvarsindic) 883 parenttabvars => Agrif_Curgrid % parent % tabvars(tabvarsindic) 884 roottabvars => Agrif_Mygrid % tabvars(tabvarsindic) 885 endif 886 779 887 IF (present(procname)) THEN 780 888 Call Agrif_Interp_Bc_2D( 781 & Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp,782 & Agrif_Curgrid % parent % tabvars(tabvarsindic),783 & Agrif_Curgrid % tabvars(tabvarsindic),q,784 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcinf,785 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcsup,889 & roottabvars % var % bctypeinterp, 890 & parenttabvars, 891 & tabvars,q, 892 & tabvars % var % bcinf, 893 & tabvars % var % bcsup, 786 894 & weight,pweight,procname) 787 895 ELSE 788 789 & Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp,790 & Agrif_Curgrid % parent % tabvars(tabvarsindic),791 & Agrif_Curgrid % tabvars(tabvarsindic),q,792 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcinf,793 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcsup,896 Call Agrif_Interp_Bc_2D( 897 & roottabvars % var % bctypeinterp, 898 & parenttabvars, 899 & tabvars,q, 900 & tabvars % var % bcinf, 901 & tabvars % var % bcsup, 794 902 & weight,pweight) 795 903 ENDIF 796 797 904 End Subroutine Agrif_Bc_variable2d 905 798 906 C 799 907 C ************************************************************************** … … 811 919 REAL :: weight 812 920 LOGICAL :: pweight 813 C 921 TYPE(Agrif_PVariable),Pointer ::tabvars,parenttabvars,roottabvars 922 C 923 C 924 C 925 If (Agrif_Root()) Return 926 814 927 if ( PRESENT(calledweight) ) then 815 928 weight=calledweight … … 819 932 pweight = .FALSE. 820 933 endif 821 C 822 C 823 If (Agrif_Root()) Return 934 935 if (tabvarsindic <=0) then 936 tabvars => Agrif_Search_Variable(Agrif_Curgrid,-tabvarsindic) 937 parenttabvars => tabvars%parent_var 938 roottabvars => Agrif_Search_Variable(Agrif_Mygrid,-tabvarsindic) 939 else 940 tabvars=>Agrif_Curgrid % tabvars(tabvarsindic) 941 parenttabvars => Agrif_Curgrid % parent % tabvars(tabvarsindic) 942 roottabvars => Agrif_Mygrid % tabvars(tabvarsindic) 943 endif 944 824 945 IF (present(procname)) THEN 825 946 Call Agrif_Interp_Bc_3D( 826 & Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp,827 & Agrif_Curgrid % parent % tabvars(tabvarsindic),828 & Agrif_Curgrid % tabvars(tabvarsindic),q,829 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcinf,830 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcsup,947 & roottabvars % var % bctypeinterp, 948 & parenttabvars, 949 & tabvars,q, 950 & tabvars % var % bcinf, 951 & tabvars % var % bcsup, 831 952 & weight,pweight,procname) 832 953 ELSE 833 954 Call Agrif_Interp_Bc_3D( 834 & Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp,835 & Agrif_Curgrid % parent % tabvars(tabvarsindic),836 & Agrif_Curgrid % tabvars(tabvarsindic),q,837 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcinf,838 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcsup,955 & roottabvars % var % bctypeinterp, 956 & parenttabvars, 957 & tabvars,q, 958 & tabvars % var % bcinf, 959 & tabvars % var % bcsup, 839 960 & weight,pweight) 840 961 ENDIF 841 962 End Subroutine Agrif_Bc_variable3d 963 842 964 C 843 965 C ************************************************************************** … … 855 977 REAL :: weight 856 978 LOGICAL :: pweight 857 C 979 TYPE(Agrif_PVariable),Pointer ::tabvars,parenttabvars,roottabvars 980 C 981 C 982 C 983 If (Agrif_Root()) Return 984 858 985 if ( PRESENT(calledweight) ) then 859 986 weight=calledweight … … 863 990 pweight = .FALSE. 864 991 endif 865 C 866 C 867 If (Agrif_Root()) Return 992 993 if (tabvarsindic <=0) then 994 tabvars => Agrif_Search_Variable(Agrif_Curgrid,-tabvarsindic) 995 parenttabvars => tabvars%parent_var 996 roottabvars => Agrif_Search_Variable(Agrif_Mygrid,-tabvarsindic) 997 else 998 tabvars=>Agrif_Curgrid % tabvars(tabvarsindic) 999 parenttabvars => Agrif_Curgrid % parent % tabvars(tabvarsindic) 1000 roottabvars => Agrif_Mygrid % tabvars(tabvarsindic) 1001 endif 1002 868 1003 IF (present(procname)) THEN 869 1004 Call Agrif_Interp_Bc_4D( 870 & Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp,871 & Agrif_Curgrid % parent % tabvars(tabvarsindic),872 & Agrif_Curgrid % tabvars(tabvarsindic),q,873 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcinf,874 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcsup,1005 & roottabvars % var % bctypeinterp, 1006 & parenttabvars, 1007 & tabvars,q, 1008 & tabvars % var % bcinf, 1009 & tabvars % var % bcsup, 875 1010 & weight,pweight,procname) 876 1011 ELSE 877 1012 Call Agrif_Interp_Bc_4D( 878 & Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp,879 & Agrif_Curgrid % parent % tabvars(tabvarsindic),880 & Agrif_Curgrid % tabvars(tabvarsindic),q,881 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcinf,882 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcsup,1013 & roottabvars % var % bctypeinterp, 1014 & parenttabvars, 1015 & tabvars,q, 1016 & tabvars % var % bcinf, 1017 & tabvars % var % bcsup, 883 1018 & weight,pweight) 884 1019 ENDIF 885 1020 End Subroutine Agrif_Bc_variable4d 1021 886 1022 C 887 1023 C ************************************************************************** … … 889 1025 C ************************************************************************** 890 1026 Subroutine Agrif_Bc_variable5d(q,tabvarsindic,calledweight, 891 & procname)1027 & procname) 892 1028 893 1029 REAL , Dimension(:,:,:,:,:) :: q … … 899 1035 REAL :: weight 900 1036 LOGICAL :: pweight 901 C 1037 TYPE(Agrif_PVariable),Pointer ::tabvars,parenttabvars,roottabvars 1038 C 1039 C 1040 C 1041 If (Agrif_Root()) Return 1042 902 1043 if ( PRESENT(calledweight) ) then 903 1044 weight=calledweight … … 907 1048 pweight = .FALSE. 908 1049 endif 909 C 910 C 911 If (Agrif_Root()) Return 1050 1051 if (tabvarsindic <=0) then 1052 tabvars => Agrif_Search_Variable(Agrif_Curgrid,-tabvarsindic) 1053 parenttabvars => tabvars%parent_var 1054 roottabvars => Agrif_Search_Variable(Agrif_Mygrid,-tabvarsindic) 1055 else 1056 tabvars=>Agrif_Curgrid % tabvars(tabvarsindic) 1057 parenttabvars => Agrif_Curgrid % parent % tabvars(tabvarsindic) 1058 roottabvars => Agrif_Mygrid % tabvars(tabvarsindic) 1059 endif 1060 912 1061 IF (present(procname)) THEN 913 Call Agrif_Interp_Bc_5 D(914 & Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp,915 & Agrif_Curgrid % parent % tabvars(tabvarsindic),916 & Agrif_Curgrid % tabvars(tabvarsindic),q,917 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcinf,918 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcsup,1062 Call Agrif_Interp_Bc_5d( 1063 & roottabvars % var % bctypeinterp, 1064 & parenttabvars, 1065 & tabvars,q, 1066 & tabvars % var % bcinf, 1067 & tabvars % var % bcsup, 919 1068 & weight,pweight,procname) 920 1069 ELSE 921 Call Agrif_Interp_Bc_5 D(922 & Agrif_Mygrid % tabvars(tabvarsindic)% var % bctypeinterp,923 & Agrif_Curgrid % parent % tabvars(tabvarsindic),924 & Agrif_Curgrid % tabvars(tabvarsindic),q,925 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcinf,926 & Agrif_Curgrid % tabvars(tabvarsindic)% var % bcsup,1070 Call Agrif_Interp_Bc_5d( 1071 & roottabvars % var % bctypeinterp, 1072 & parenttabvars, 1073 & tabvars,q, 1074 & tabvars % var % bcinf, 1075 & tabvars % var % bcsup, 927 1076 & weight,pweight) 928 1077 ENDIF 929 1078 End Subroutine Agrif_Bc_variable5d 1079 930 1080 C 931 1081 C ************************************************************************** … … 933 1083 C ************************************************************************** 934 1084 C 935 Subroutine Agrif_Interp_var0d(tabvarsindic0,tabvarsindic )1085 Subroutine Agrif_Interp_var0d(tabvarsindic0,tabvarsindic,procname) 936 1086 937 1087 INTEGER :: tabvarsindic0 ! indice of the variable in tabvars 938 1088 INTEGER :: tabvarsindic ! indice of the variable in tabvars 939 1089 INTEGER :: dimensio ! indice of the variable in tabvars 1090 External :: procname 1091 Optional :: procname 940 1092 C 941 1093 if (Agrif_Root()) Return … … 943 1095 dimensio = Agrif_Mygrid % tabvars(tabvarsindic) % var % nbdim 944 1096 C 945 if ( dimensio .EQ. 1 ) 946 & Call Agrif_Interp_1D( 1097 if ( dimensio .EQ. 1 ) then 1098 if (present(procname)) then 1099 Call Agrif_Interp_1D( 947 1100 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 948 1101 & Agrif_Curgrid % parent % tabvars(tabvarsindic), … … 950 1103 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array1 , 951 1104 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1105 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1106 else 1107 Call Agrif_Interp_1D( 1108 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1109 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1110 & Agrif_Curgrid % tabvars(tabvarsindic), 1111 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array1 , 1112 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 952 1113 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 953 C 954 if ( dimensio .EQ. 2 ) 955 & Call Agrif_Interp_2D( 1114 endif 1115 endif 1116 C 1117 if ( dimensio .EQ. 2 ) then 1118 if (present(procname)) then 1119 Call Agrif_Interp_2D( 956 1120 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 957 1121 & Agrif_Curgrid % parent % tabvars(tabvarsindic), … … 959 1123 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array2 , 960 1124 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1125 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1126 else 1127 Call Agrif_Interp_2D( 1128 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1129 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1130 & Agrif_Curgrid % tabvars(tabvarsindic), 1131 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array2 , 1132 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 961 1133 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 962 C 963 if ( dimensio .EQ. 3 ) 964 & Call Agrif_Interp_3D( 1134 endif 1135 endif 1136 C 1137 if ( dimensio .EQ. 3 ) then 1138 if (present(procname)) then 1139 Call Agrif_Interp_3D( 965 1140 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 966 1141 & Agrif_Curgrid % parent % tabvars(tabvarsindic), … … 968 1143 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array3 , 969 1144 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1145 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1146 else 1147 Call Agrif_Interp_3D( 1148 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1149 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1150 & Agrif_Curgrid % tabvars(tabvarsindic), 1151 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array3 , 1152 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 970 1153 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 971 C 972 if ( dimensio .EQ. 4 ) 973 & Call Agrif_Interp_4D( 1154 endif 1155 endif 1156 C 1157 if ( dimensio .EQ. 4 ) then 1158 if (present(procname)) then 1159 Call Agrif_Interp_4D( 974 1160 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 975 1161 & Agrif_Curgrid % parent % tabvars(tabvarsindic), … … 977 1163 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array4 , 978 1164 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1165 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1166 else 1167 Call Agrif_Interp_4D( 1168 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1169 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1170 & Agrif_Curgrid % tabvars(tabvarsindic), 1171 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array4 , 1172 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 979 1173 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 980 C 981 if ( dimensio .EQ. 5 ) 982 & Call Agrif_Interp_5D( 1174 endif 1175 endif 1176 C 1177 if ( dimensio .EQ. 5 ) then 1178 if (present(procname)) then 1179 Call Agrif_Interp_5D( 983 1180 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 984 1181 & Agrif_Curgrid % parent % tabvars(tabvarsindic), … … 986 1183 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array5 , 987 1184 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1185 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1186 else 1187 Call Agrif_Interp_5D( 1188 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1189 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1190 & Agrif_Curgrid % tabvars(tabvarsindic), 1191 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array5 , 1192 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 988 1193 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 989 C 990 if ( dimensio .EQ. 6 ) 991 & Call Agrif_Interp_6D( 1194 endif 1195 endif 1196 C 1197 if ( dimensio .EQ. 6 ) then 1198 if (present(procname)) then 1199 Call Agrif_Interp_6D( 992 1200 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 993 1201 & Agrif_Curgrid % parent % tabvars(tabvarsindic), … … 995 1203 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array6 , 996 1204 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1205 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1206 else 1207 Call Agrif_Interp_6D( 1208 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1209 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1210 & Agrif_Curgrid % tabvars(tabvarsindic), 1211 & Agrif_Curgrid % tabvars(tabvarsindic0) % var % array6 , 1212 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 997 1213 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 1214 endif 1215 endif 998 1216 C 999 1217 Return … … 1004 1222 C ************************************************************************** 1005 1223 C 1006 Subroutine Agrif_Interp_var1d(q,tabvarsindic )1224 Subroutine Agrif_Interp_var1d(q,tabvarsindic,procname) 1007 1225 1008 1226 REAL, DIMENSION(:) :: q 1009 1227 INTEGER :: tabvarsindic ! indice of the variable in tabvars 1228 External :: procname 1229 Optional :: procname 1010 1230 C 1011 1231 if (Agrif_Root()) Return 1012 1232 C 1233 if (present(procname)) then 1013 1234 Call Agrif_Interp_1D( 1014 1235 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, … … 1016 1237 & Agrif_Curgrid % tabvars(tabvarsindic),q, 1017 1238 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1239 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1240 else 1241 Call Agrif_Interp_1D( 1242 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1243 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1244 & Agrif_Curgrid % tabvars(tabvarsindic),q, 1245 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1018 1246 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 1019 1247 endif 1020 1248 Return 1021 1249 End Subroutine Agrif_Interp_var1d … … 1025 1253 C ************************************************************************** 1026 1254 C 1027 Subroutine Agrif_Interp_var2d(q,tabvarsindic )1255 Subroutine Agrif_Interp_var2d(q,tabvarsindic,procname) 1028 1256 1029 1257 REAL, DIMENSION(:,:) :: q 1030 1258 INTEGER :: tabvarsindic ! indice of the variable in tabvars 1259 External :: procname 1260 Optional :: procname 1261 1031 1262 C 1032 1263 if (Agrif_Root()) Return 1033 1264 C 1265 if (present(procname)) then 1034 1266 Call Agrif_Interp_2D( 1035 1267 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, … … 1037 1269 & Agrif_Curgrid % tabvars(tabvarsindic),q, 1038 1270 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1271 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1272 else 1273 Call Agrif_Interp_2D( 1274 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1275 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1276 & Agrif_Curgrid % tabvars(tabvarsindic),q, 1277 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1039 1278 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 1040 1279 endif 1041 1280 Return 1042 1281 End Subroutine Agrif_Interp_var2d … … 1046 1285 C ************************************************************************** 1047 1286 C 1048 Subroutine Agrif_Interp_var3d(q,tabvarsindic )1287 Subroutine Agrif_Interp_var3d(q,tabvarsindic,procname) 1049 1288 1050 1289 REAL, DIMENSION(:,:,:) :: q 1051 1290 INTEGER :: tabvarsindic ! indice of the variable in tabvars 1291 External :: procname 1292 Optional :: procname 1293 1052 1294 C 1053 1295 if (Agrif_Root()) Return 1054 1296 C 1297 if (present(procname)) then 1055 1298 Call Agrif_Interp_3D( 1056 1299 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, … … 1058 1301 & Agrif_Curgrid % tabvars(tabvarsindic),q, 1059 1302 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1303 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1304 else 1305 Call Agrif_Interp_3D( 1306 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1307 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1308 & Agrif_Curgrid % tabvars(tabvarsindic),q, 1309 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1060 1310 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 1061 1311 endif 1062 1312 Return 1063 1313 End Subroutine Agrif_Interp_var3d … … 1067 1317 C ************************************************************************** 1068 1318 C 1069 Subroutine Agrif_Interp_var4d(q,tabvarsindic )1319 Subroutine Agrif_Interp_var4d(q,tabvarsindic,procname) 1070 1320 1071 1321 REAL, DIMENSION(:,:,:,:) :: q 1072 1322 INTEGER :: tabvarsindic ! indice of the variable in tabvars 1323 External :: procname 1324 Optional :: procname 1325 1073 1326 C 1074 1327 if (Agrif_Root()) Return 1075 1328 C 1329 if (present(procname)) then 1076 1330 Call Agrif_Interp_4D( 1077 1331 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, … … 1079 1333 & Agrif_Curgrid % tabvars(tabvarsindic),q, 1080 1334 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1335 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1336 else 1337 Call Agrif_Interp_4D( 1338 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1339 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1340 & Agrif_Curgrid % tabvars(tabvarsindic),q, 1341 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1081 1342 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 1082 1343 endif 1083 1344 Return 1084 1345 End Subroutine Agrif_Interp_var4d … … 1088 1349 C ************************************************************************** 1089 1350 C 1090 Subroutine Agrif_Interp_var5d(q,tabvarsindic )1351 Subroutine Agrif_Interp_var5d(q,tabvarsindic,procname) 1091 1352 1092 1353 REAL, DIMENSION(:,:,:,:,:) :: q 1093 1354 INTEGER :: tabvarsindic ! indice of the variable in tabvars 1355 External :: procname 1356 Optional :: procname 1357 1094 1358 C 1095 1359 if (Agrif_Root()) Return 1096 1360 C 1361 if (present(procname)) then 1097 1362 Call Agrif_Interp_5D( 1098 1363 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, … … 1100 1365 & Agrif_Curgrid % tabvars(tabvarsindic),q, 1101 1366 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1367 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim,procname) 1368 else 1369 Call Agrif_Interp_5D( 1370 & Agrif_Mygrid % tabvars(tabvarsindic) % var % TypeInterp, 1371 & Agrif_Curgrid % parent % tabvars(tabvarsindic), 1372 & Agrif_Curgrid % tabvars(tabvarsindic),q, 1373 & Agrif_Mygrid % tabvars(tabvarsindic) % var % restaure, 1102 1374 & Agrif_Mygrid % tabvars(tabvarsindic) %var % nbdim) 1103 1375 endif 1104 1376 Return 1105 1377 End Subroutine Agrif_Interp_var5d … … 1110 1382 C 1111 1383 Subroutine Agrif_update_var0d(tabvarsindic0,tabvarsindic, 1112 & locupdate,procname) 1384 & locupdate,locupdate1, 1385 & locupdate2,procname) 1113 1386 1114 1387 INTEGER :: tabvarsindic ! indice of the variable in tabvars … … 1118 1391 INTEGER :: dimensio 1119 1392 INTEGER, DIMENSION(2), OPTIONAL :: locupdate 1393 INTEGER, DIMENSION(2), OPTIONAL :: locupdate1 1394 INTEGER, DIMENSION(2), OPTIONAL :: locupdate2 1120 1395 C 1121 1396 dimensio = Agrif_Mygrid % tabvars(tabvarsindic) % var % nbdim 1122 1397 C 1123 1398 if (Agrif_Root()) Return 1399 1124 1400 C 1125 1401 IF (present(locupdate)) THEN 1126 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = locupdate(1) 1127 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = locupdate(2) 1128 ELSE 1129 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = -99 1130 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = -99 1131 ENDIF 1402 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:dimensio) 1403 & = locupdate(1) 1404 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:dimensio) 1405 & = locupdate(2) 1406 ELSE 1407 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:dimensio) 1408 & = -99 1409 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:dimensio) 1410 & = -99 1411 ENDIF 1412 1413 IF (present(locupdate1)) THEN 1414 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1) 1415 & = locupdate1(1) 1416 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1) 1417 & = locupdate1(2) 1418 ENDIF 1419 1420 IF (present(locupdate2)) THEN 1421 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(2) 1422 & = locupdate2(1) 1423 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(2) 1424 & = locupdate2(2) 1425 ENDIF 1132 1426 1133 1427 if ( dimensio .EQ. 1 ) then … … 1240 1534 C ************************************************************************** 1241 1535 C 1242 Subroutine Agrif_update_var1d(q,tabvarsindic,locupdate,procname) 1536 Subroutine Agrif_update_var1d(q,tabvarsindic,locupdate, 1537 & locupdate1,locupdate2,procname) 1243 1538 1244 1539 REAL, DIMENSION(:) :: q … … 1247 1542 Optional :: procname 1248 1543 INTEGER, DIMENSION(2), OPTIONAL :: locupdate 1544 INTEGER, DIMENSION(2), OPTIONAL :: locupdate1 1545 INTEGER, DIMENSION(2), OPTIONAL :: locupdate2 1249 1546 C 1250 1547 if (Agrif_Root()) Return 1251 1548 C 1252 1549 IF (present(locupdate)) THEN 1253 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = locupdate(1) 1254 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = locupdate(2) 1255 ELSE 1256 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = -99 1257 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = -99 1258 ENDIF 1550 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:1) 1551 & = locupdate(1) 1552 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:1) 1553 & = locupdate(2) 1554 ELSE 1555 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:1) 1556 & = -99 1557 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:1) 1558 & = -99 1559 ENDIF 1560 1561 IF (present(locupdate1)) THEN 1562 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1) 1563 & = locupdate1(1) 1564 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1) 1565 & = locupdate1(2) 1566 ENDIF 1567 1568 IF (present(locupdate2)) THEN 1569 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(2) 1570 & = locupdate2(1) 1571 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(2) 1572 & = locupdate2(2) 1573 ENDIF 1259 1574 1260 1575 IF (present(procname)) THEN … … 1283 1598 C ************************************************************************** 1284 1599 C 1285 Subroutine Agrif_update_var2d(q,tabvarsindic,locupdate,procname) 1600 Subroutine Agrif_update_var2d(q,tabvarsindic,locupdate, 1601 & locupdate1,locupdate2,procname) 1286 1602 1287 1603 REAL, DIMENSION(:,:) :: q … … 1289 1605 Optional :: procname 1290 1606 INTEGER, DIMENSION(2), OPTIONAL :: locupdate 1607 INTEGER, DIMENSION(2), OPTIONAL :: locupdate1 1608 INTEGER, DIMENSION(2), OPTIONAL :: locupdate2 1291 1609 INTEGER :: tabvarsindic ! indice of the variable in tabvars 1292 1610 C 1293 1611 IF (Agrif_Root()) RETURN 1612 1294 1613 C 1295 1614 IF (present(locupdate)) THEN 1296 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = locupdate(1) 1297 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = locupdate(2) 1298 ELSE 1299 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = -99 1300 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = -99 1615 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:2) 1616 & = locupdate(1) 1617 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:2) 1618 & = locupdate(2) 1619 ELSE 1620 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:2) 1621 & = -99 1622 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:2) 1623 & = -99 1624 ENDIF 1625 1626 IF (present(locupdate1)) THEN 1627 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1) 1628 & = locupdate1(1) 1629 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1) 1630 & = locupdate1(2) 1631 ENDIF 1632 1633 IF (present(locupdate2)) THEN 1634 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(2) 1635 & = locupdate2(1) 1636 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(2) 1637 & = locupdate2(2) 1301 1638 ENDIF 1302 1639 … … 1326 1663 C ************************************************************************** 1327 1664 C 1328 Subroutine Agrif_update_var3d(q,tabvarsindic,locupdate,procname) 1665 Subroutine Agrif_update_var3d(q,tabvarsindic,locupdate, 1666 & locupdate1,locupdate2,procname) 1329 1667 1330 1668 REAL, DIMENSION(:,:,:) :: q … … 1332 1670 Optional :: procname 1333 1671 INTEGER, DIMENSION(2), OPTIONAL :: locupdate 1334 INTEGER :: tabvarsindic ! indice of the variable in tabvars 1335 C 1336 IF (Agrif_Root()) RETURN 1672 INTEGER, DIMENSION(2), OPTIONAL :: locupdate1 1673 INTEGER, DIMENSION(2), OPTIONAL :: locupdate2 1674 INTEGER :: tabvarsindic ! indice of the variable in tabvars 1675 C 1676 IF (Agrif_Root()) RETURN 1337 1677 C 1338 1678 1339 1679 IF (present(locupdate)) THEN 1340 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = locupdate(1) 1341 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = locupdate(2) 1342 ELSE 1343 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = -99 1344 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = -99 1680 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:3) 1681 & = locupdate(1) 1682 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:3) 1683 & = locupdate(2) 1684 ELSE 1685 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:3) 1686 & = -99 1687 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:3) 1688 & = -99 1689 ENDIF 1690 1691 IF (present(locupdate1)) THEN 1692 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1) 1693 & = locupdate1(1) 1694 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1) 1695 & = locupdate1(2) 1696 ENDIF 1697 1698 IF (present(locupdate2)) THEN 1699 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(2) 1700 & = locupdate2(1) 1701 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(2) 1702 & = locupdate2(2) 1345 1703 ENDIF 1346 1704 … … 1370 1728 C ************************************************************************** 1371 1729 C 1372 Subroutine Agrif_update_var4d(q,tabvarsindic,locupdate,procname) 1730 Subroutine Agrif_update_var4d(q,tabvarsindic,locupdate, 1731 & locupdate1,locupdate2,procname) 1373 1732 1374 1733 REAL, DIMENSION(:,:,:,:) :: q … … 1376 1735 Optional :: procname 1377 1736 INTEGER, DIMENSION(2), OPTIONAL :: locupdate 1737 INTEGER, DIMENSION(2), OPTIONAL :: locupdate1 1738 INTEGER, DIMENSION(2), OPTIONAL :: locupdate2 1378 1739 INTEGER :: tabvarsindic ! indice of the variable in tabvars 1379 1740 C … … 1381 1742 C 1382 1743 IF (present(locupdate)) THEN 1383 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = locupdate(1) 1384 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = locupdate(2) 1385 ELSE 1386 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = -99 1387 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = -99 1744 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:4) 1745 & = locupdate(1) 1746 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:4) 1747 & = locupdate(2) 1748 ELSE 1749 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:4) 1750 & = -99 1751 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:4) 1752 & = -99 1753 ENDIF 1754 1755 IF (present(locupdate1)) THEN 1756 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1) 1757 & = locupdate1(1) 1758 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1) 1759 & = locupdate1(2) 1760 ENDIF 1761 1762 IF (present(locupdate2)) THEN 1763 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(2) 1764 & = locupdate2(1) 1765 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(2) 1766 & = locupdate2(2) 1388 1767 ENDIF 1389 1768 … … 1413 1792 C ************************************************************************** 1414 1793 C 1415 Subroutine Agrif_update_var5d(q,tabvarsindic,locupdate,procname) 1794 Subroutine Agrif_update_var5d(q,tabvarsindic,locupdate, 1795 & locupdate1,locupdate2,procname) 1416 1796 1417 1797 REAL, DIMENSION(:,:,:,:,:) :: q … … 1419 1799 Optional :: procname 1420 1800 INTEGER, DIMENSION(2), OPTIONAL :: locupdate 1801 INTEGER, DIMENSION(2), OPTIONAL :: locupdate1 1802 INTEGER, DIMENSION(2), OPTIONAL :: locupdate2 1421 1803 INTEGER :: tabvarsindic ! indice of the variable in tabvars 1422 1804 C … … 1424 1806 C 1425 1807 IF (present(locupdate)) THEN 1426 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = locupdate(1) 1427 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = locupdate(2) 1428 ELSE 1429 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf = -99 1430 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup = -99 1808 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:5) 1809 & = locupdate(1) 1810 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:5) 1811 & = locupdate(2) 1812 ELSE 1813 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1:5) 1814 & = -99 1815 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1:5) 1816 & = -99 1817 ENDIF 1818 1819 IF (present(locupdate1)) THEN 1820 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(1) 1821 & = locupdate1(1) 1822 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(1) 1823 & = locupdate1(2) 1824 ENDIF 1825 1826 IF (present(locupdate2)) THEN 1827 Agrif_Curgrid%tabvars(tabvarsindic)%var % updateinf(2) 1828 & = locupdate2(1) 1829 Agrif_Curgrid%tabvars(tabvarsindic)%var % updatesup(2) 1830 & = locupdate2(2) 1431 1831 ENDIF 1432 1832 … … 1551 1951 1552 1952 End Subroutine Agrif_Flux_Correction 1553 1554 Subroutine Agrif_Declare_Profile(profilename,posvar,firstpoint, 1555 & raf) 1953 1954 Subroutine Agrif_Declare_Variable(posvar,firstpoint, 1955 & raf,lb,ub,varid) 1956 character*(80) :: variablename 1957 Type(Agrif_List_Variables), Pointer :: newvariable,newvariablep 1958 INTEGER, DIMENSION(:) :: posvar 1959 INTEGER, DIMENSION(:) :: lb,ub 1960 INTEGER, DIMENSION(:) :: firstpoint 1961 CHARACTER(*) ,DIMENSION(:) :: raf 1962 TYPE(Agrif_Pvariable), Pointer :: parent_var,root_var 1963 INTEGER :: dimensio 1964 INTEGER :: varid 1965 1966 if (agrif_root()) return 1967 1968 dimensio = SIZE(posvar) 1969 C 1970 C 1971 Allocate(newvariable) 1972 Allocate(newvariable%pvar) 1973 Allocate(newvariable%pvar%var) 1974 Allocate(newvariable%pvar%var%posvar(dimensio)) 1975 Allocate(newvariable%pvar%var%interptab(dimensio)) 1976 newvariable%pvar%var%variablename = variablename 1977 newvariable%pvar%var%interptab = raf 1978 newvariable%pvar%var%nbdim = dimensio 1979 newvariable%pvar%var%posvar = posvar 1980 newvariable%pvar%var%point(1:dimensio) = firstpoint 1981 newvariable%pvar%var%lb(1:dimensio) = lb(1:dimensio) 1982 newvariable%pvar%var%ub(1:dimensio) = ub(1:dimensio) 1983 1984 newvariable % nextvariable => Agrif_Curgrid%variables 1985 1986 Agrif_Curgrid%variables => newvariable 1987 Agrif_Curgrid%Nbvariables = Agrif_Curgrid%Nbvariables + 1 1988 1989 varid = -Agrif_Curgrid%Nbvariables 1990 1991 if (agrif_curgrid%parent%nbvariables < agrif_curgrid%nbvariables) 1992 & then 1993 Allocate(newvariablep) 1994 Allocate(newvariablep%pvar) 1995 Allocate(newvariablep%pvar%var) 1996 Allocate(newvariablep%pvar%var%posvar(dimensio)) 1997 Allocate(newvariablep%pvar%var%interptab(dimensio)) 1998 newvariablep%pvar%var%variablename = variablename 1999 newvariablep%pvar%var%interptab = raf 2000 newvariablep%pvar%var%nbdim = dimensio 2001 newvariablep%pvar%var%posvar = posvar 2002 newvariablep%pvar%var%point(1:dimensio) = firstpoint 2003 2004 newvariablep % nextvariable => Agrif_Curgrid%parent%variables 2005 2006 Agrif_Curgrid%parent%variables => newvariablep 2007 2008 Agrif_Curgrid%parent%Nbvariables = 2009 & Agrif_Curgrid%parent%Nbvariables + 1 2010 parent_var=>newvariablep%pvar 2011 else 2012 parent_var=>Agrif_Search_Variable 2013 & (Agrif_Curgrid%parent,Agrif_Curgrid%nbvariables) 2014 endif 2015 2016 newvariable%pvar%parent_var=>parent_var 2017 2018 root_var=>Agrif_Search_Variable 2019 & (Agrif_Mygrid,Agrif_Curgrid%nbvariables) 2020 2021 newvariable%pvar%var%root_var=>root_var%var 2022 2023 2024 End Subroutine Agrif_Declare_Variable 2025 2026 FUNCTION Agrif_Search_Variable(grid,varid) 2027 integer :: varid 2028 Type(Agrif_Pvariable), Pointer :: Agrif_Search_variable 2029 Type(Agrif_grid), Pointer :: grid 2030 2031 Type(Agrif_List_Variables), pointer :: parcours 2032 Logical :: foundvariable 2033 integer nb 2034 2035 foundvariable = .FALSE. 2036 parcours => grid%variables 2037 2038 do nb=1,varid-1 2039 parcours => parcours%nextvariable 2040 End Do 2041 2042 Agrif_Search_variable => parcours%pvar 2043 2044 2045 End Function Agrif_Search_variable 2046 2047 Subroutine Agrif_Declare_Profile_flux(profilename,posvar, 2048 & firstpoint,raf) 1556 2049 character*(*) :: profilename 1557 2050 Type(Agrif_Profile), Pointer :: newprofile … … 1577 2070 Agrif_myprofiles => newprofile 1578 2071 1579 End Subroutine Agrif_Declare_Profile 2072 End Subroutine Agrif_Declare_Profile_flux 1580 2073 1581 2074 C
Note: See TracChangeset
for help on using the changeset viewer.