Changeset 1293 for LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/startvar.F
- Timestamp:
- Dec 22, 2009, 12:07:26 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4V5.0-dev/libf/dyn3dpar/startvar.F
r1279 r1293 9 9 ! There are three ways to access data from the database of atmospheric data which 10 10 ! can be used to initialize the model. This depends on the type of field which needs 11 ! to be extracted. In any case the call should come after a restget and should be of the type : 12 ! CALL startget(...) 13 ! 11 ! to be extracted. 14 12 ! We will details the possible arguments to startget here : 15 13 ! 16 14 ! - A 2D variable on the dynamical grid : 17 ! CALL startget (varname, iml, jml, lon_in, lat_in, champ, val_ex, jml2, lon_in2, lat_in2, interbar )15 ! CALL startget_phys2d(varname, iml, jml, lon_in, lat_in, champ, val_ex, jml2, lon_in2, lat_in2, interbar ) 18 16 ! 19 17 ! - A 1D variable on the physical grid : 20 ! CALL startget (varname, iml, jml, lon_in, lat_in, nbindex, champ, val_exp, jml2, lon_in2, lat_in2, interbar )18 ! CALL startget_phys1d(varname, iml, jml, lon_in, lat_in, nbindex, champ, val_exp, jml2, lon_in2, lat_in2, interbar ) 21 19 ! 22 20 ! 23 21 ! - A 3D variable on the dynamical grid : 24 ! CALL startget (varname, iml, jml, lon_in, lat_in, lml, pls, workvar, champ, val_exp, jml2, lon_in2, lat_in2, interbar )22 ! CALL startget_dyn(varname, iml, jml, lon_in, lat_in, lml, pls, workvar, champ, val_exp, jml2, lon_in2, lat_in2, interbar ) 25 23 ! 26 24 ! … … 46 44 ! 47 45 PRIVATE 48 PUBLIC startget 49 ! 50 ! 51 INTERFACE startget 52 MODULE PROCEDURE startget_phys2d, startget_phys1d, startget_dyn 53 END INTERFACE 46 public startget_phys2d, startget_phys1d, startget_dyn 54 47 ! 55 48 INTEGER, SAVE :: fid_phys, fid_dyn … … 553 546 SUBROUTINE start_init_phys( iml, jml, lon_in, lat_in, jml2, 554 547 . lon_in2, lat_in2 , interbar ) 548 549 use inter_barxy_m, only: inter_barxy 555 550 ! 556 551 INTEGER, INTENT(in) :: iml, jml ,jml2 … … 648 643 WRITE(6,*) '-------------------------------------------------', 649 644 ,'--------------' 650 CALL inter_barxy ( iml_phys,jml_phys -1,lon_rad,lat_rad,651 , var_ana, iml-1, jml-1, lon_in2, lat_in2, jml, tmp_var)645 CALL inter_barxy(lon_rad, lat_rad(:jml_phys -1), var_ana, 646 $ lon_in2(:iml-1), lat_in2(:jml-1), tmp_var) 652 647 ELSE 653 648 CALL grille_m(iml_phys, jml_phys, lon_rad, lat_rad, … … 674 669 WRITE(6,*) '-------------------------------------------------', 675 670 ,'--------------' 676 CALL inter_barxy ( iml_phys,jml_phys -1,lon_rad,lat_rad,677 , var_ana, iml-1, jml-1, lon_in2, lat_in2, jml, tmp_var )671 CALL inter_barxy(lon_rad, lat_rad(:jml_phys -1), var_ana, 672 $ lon_in2(:iml-1), lat_in2(:jml-1), tmp_var) 678 673 ELSE 679 674 CALL grille_m(iml_phys, jml_phys, lon_rad, lat_rad, … … 691 686 ! 692 687 ! 693 SUBROUTINE startget_dyn(varname, iml, jml,lon_in, lat_in,694 . lml, pls, workvar, champ, val_exp,jml2, lon_in2, lat_in2 ,688 SUBROUTINE startget_dyn(varname, lon_in, lat_in, 689 . pls, workvar, champ, val_exp, lon_in2, lat_in2 , 695 690 , interbar ) 691 692 use assert_eq_m, only: assert_eq 696 693 ! 697 694 ! ARGUMENTS 698 695 ! 699 CHARACTER*(*), INTENT(in) :: varname 700 INTEGER, INTENT(in) :: iml, jml, lml, jml2 701 REAL, INTENT(in) :: lon_in(iml), lat_in(jml) 702 REAL, INTENT(in) :: lon_in2(iml), lat_in2(jml2) 703 REAL, INTENT(in) :: pls(iml, jml, lml) 704 REAL, INTENT(in) :: workvar(iml, jml, lml) 705 REAL, INTENT(inout) :: champ(iml, jml, lml) 696 CHARACTER(len=*), INTENT(in) :: varname 697 REAL, INTENT(in) :: lon_in(:) ! dim(iml) 698 REAL, INTENT(in) :: lat_in(:) ! dim(jml) 699 REAL, INTENT(in) :: lon_in2(:) ! dim(iml) 700 REAL, INTENT(in) :: lat_in2(:) ! dim(jml2) 701 REAL, INTENT(in) :: pls(:, :, :) ! dim(iml, jml, lml) 702 REAL, INTENT(in) :: workvar(:, :, :) ! dim(iml, jml, lml) 703 REAL, INTENT(inout) :: champ(:, :, :) ! dim(iml, jml, lml) 706 704 REAL, INTENT(in) :: val_exp 707 705 LOGICAL interbar … … 709 707 ! LOCAL 710 708 ! 711 INTEGER :: il, ij, ii 709 INTEGER :: il, ij, ii, iml, jml, lml, jml2 712 710 REAL :: xppn, xpps 713 711 ! … … 719 717 ! This routine only works if the variable does not exist or is constant 720 718 ! 719 C ----------------------------- 720 721 iml = assert_eq((/size(lon_in), size(pls, 1), size(workvar, 1), 722 $ size(champ, 1), size(lon_in2)/), "startget_dyn iml") 723 jml = assert_eq(size(lat_in), size(pls, 2), size(workvar, 2), 724 $ size(champ, 2), "startget_dyn jml") 725 lml = assert_eq(size(pls, 3), size(workvar, 3), size(champ, 3), 726 $ "startget_dyn lml") 727 jml2 = size(lat_in2) 728 721 729 IF ( MINVAL(champ(:,:,:)).EQ.MAXVAL(champ(:,:,:)) .AND. 722 730 . MINVAL(champ(:,:,:)).EQ.val_exp ) THEN … … 834 842 , lat_in2 , interbar ) 835 843 ! 844 use inter_barxy_m, only: inter_barxy 845 836 846 INTEGER, INTENT(in) :: iml, jml, jml2 837 847 REAL, INTENT(in) :: lon_in(iml), lat_in(jml) … … 929 939 WRITE(6,*) '-------------------------------------------------', 930 940 ,'--------------' 931 CALL inter_barxy ( iml_dyn,jml_dyn -1,lon_rad,lat_rad,932 , var_ana, iml-1, jml-1, lon_in2, lat_in2, jml, tmp_var)941 CALL inter_barxy(lon_rad, lat_rad(:jml_dyn -1), var_ana, 942 $ lon_in2(:iml-1), lat_in2(:jml-1), tmp_var) 933 943 ELSE 934 944 CALL grille_m(iml_dyn, jml_dyn , lon_rad, lat_rad, var_ana, … … 954 964 WRITE(6,*) '-------------------------------------------------', 955 965 ,'--------------' 956 CALL inter_barxy ( iml_dyn,jml_dyn -1,lon_rad,lat_rad,957 , var_ana, iml-1, jml-1, lon_in2, lat_in2, jml, tmp_var)966 CALL inter_barxy(lon_rad, lat_rad(:jml_dyn -1), var_ana, 967 $ lon_in2(:iml-1), lat_in2(:jml-1), tmp_var) 958 968 ELSE 959 969 CALL grille_m(iml_dyn, jml_dyn , lon_rad, lat_rad, var_ana, … … 1035 1045 ! 1036 1046 ! 1047 use inter_barxy_m, only: inter_barxy 1048 1037 1049 ! ARGUMENTS 1038 1050 ! … … 1120 1132 ,'--------------' 1121 1133 ENDIF 1122 CALL inter_barxy ( iml_dyn, jml_dyn -1,lon_rad, lat_rad,1123 , var_ana3d(:,:,il),iml-1, jml2, lon_in2, lat_in2,jml,var_tmp2d)1134 CALL inter_barxy(lon_rad, lat_rad(:jml_dyn -1), 1135 $ var_ana3d(:,:,il), lon_in2(:iml-1), lat_in2, var_tmp2d) 1124 1136 ELSE 1125 1137 CALL grille_m(iml_dyn, jml_dyn, lon_rad, lat_rad,
Note: See TracChangeset
for help on using the changeset viewer.