Ignore:
Timestamp:
06/15/16 17:13:33 (8 years ago)
Author:
dumas
Message:

First parallelization instructions with OpenMP tested in debug : exactly the same results | isostasy called only every 50 years

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SOURCES/Temperature-routines/Qprod_icetemp.f90

    r70 r71  
    1717 
    1818  use Icetemp_declar 
     19!$ USE OMP_LIB 
     20 
    1921 
    2022  implicit none 
     
    4143  real, dimension(Nx,Ny)      :: Tox           !< Contraintes Sur Maille Mx 
    4244  real, dimension(Nx,Ny)      :: Toy           !< Contraintes Sur Maille Mx 
     45  real      :: Chalk_1       !< Utilise Pour Le Calcul De Chalk : Glace Posée 
     46  real      :: Chalk_2       !< Utilise Pour Le Calcul De Chalk : Ice Streams Et Ice 
    4347 
    4448 
     
    5256     ! Q_prod_demi(T_m%T,T_m%Tpmp,Deform_m%Tobmx,Deform_m%Tobmy,Geom_m%H,Geom_m%Hmx,Geom_m%Hmy,mask_flot_m%Flot,mask_flot_m%Flotmx,mask_flot_m%Flotmy,mask_flot_m%Flgzmx ,mask_flot_m%Flgzmy,Geom_m%Slop_x,Geom_m%Slop_y,Ice_flow_m%Ddx,Ice_flow_m%Ddy,& 
    5357     !      Ice_flow_m%Ddbx,Ice_flow_m%Ddby,Deform_m%Epsxx,Deform_m%Epsyy,Deform_m%Epsxy,mask_flot_m%Gzmx,mask_flot_m%Gzmy,Deform_m%Btt,Ice_flow_m%Uxbar,Ice_flow_m%Uybar,therm_var_m%Phid,Deform_m%Glen,Deform_m%Visc) 
    54  
    55      do K=2,Nz 
    56         do J=2,Ny-1 
    57            do I=2,Nx-1 
     58      
     59 
     60 
     61    !$OMP PARALLEL PRIVATE(chalk_1,chalk_2) 
     62    !$OMP DO COLLAPSE(2) 
     63    do K=2,Nz 
     64    do J=2,Ny-1 
     65            do I=2,Nx-1 
    5866 
    5967              ! Calcul De La Chaleur De Deformation Selon Xx Yy Zz Et Xy 
     
    8088           end do 
    8189        end do 
    82      end do 
     90!        !$ i_min=min(i_min,j) 
     91!        !$ i_max=max(i_max,j) 
     92     end do 
     93        !$OMP END DO NOWAIT 
     94!       !$ print*,'nb_taches = ', nb_taches 
     95!   !$ print*,"Rang : ",rang," i_min : ",i_min," i_max : ",i_max 
    8396 
    8497     !  Partie Sia   Calcul De La Chaleur Produite Sur Chaque Demi Maille 
    85      do L=1,size(Btt,4) !N1poly,N2poly 
    86         do J=2,Ny 
     98                !$OMP DO COLLAPSE(2) 
     99                do L=1,size(Btt,4) !N1poly,N2poly 
     100      do J=2,Ny 
    87101           do I=2,Nx 
    88102              !          Ffx A 3 Dimensions ! 
     
    92106        end do 
    93107     end do 
    94  
    95      do L=1,size(Btt,4)!N1poly,N2poly 
    96         do K=2,Nz 
    97            do J=2,Ny 
    98               do I=2,Nx 
    99                  if ((.not.Flotmx(I,J)).and.(.not.fleuvemx(I,J))) then ! grounded et slowssa 
    100                     Chalx(I,J,K,L)=(Btt(I-1,J,K,L)+Btt(I,J,K,L))*Ffx(I,J,L) !& 
     108     !$OMP END DO 
     109      
     110     !$OMP DO COLLAPSE(2) 
     111          do K=2,Nz 
     112       do J=2,Ny 
     113              do I=2,Nx 
     114                     do L=1,size(Btt,4)!N1poly,N2poly 
     115                    if ((.not.Flotmx(I,J)).and.(.not.fleuvemx(I,J))) then ! grounded et slowssa 
     116                        Chalx(I,J,K,L)=(Btt(I-1,J,K,L)+Btt(I,J,K,L))*Ffx(I,J,L) !& 
    101117                    !                      *Ro*G*Ee(K)**(Glen(L)+1)/Cp(I,J,K) 
    102118 
    103                  else if (fleuvemx(I,J)) then ! Ice Streams 
    104                     Chalx(I,J,K,L)=0. 
    105                  else                     ! Ice Shelves   
    106                     Chalx(I,J,K,L)=0. 
    107                  endif 
    108                  if ((.not.Flotmy(I,J)).and.(.not.fleuvemy(I,J))) then ! grounded et slowssa 
    109                     Chaly(I,J,K,L)=(Btt(I,J-1,K,L)+Btt(I,J,K,L))*Ffy(I,J,L) !& 
     119                    else if (fleuvemx(I,J)) then ! Ice Streams 
     120                        Chalx(I,J,K,L)=0. 
     121                    else                     ! Ice Shelves   
     122                        Chalx(I,J,K,L)=0. 
     123                    endif 
     124                    if ((.not.Flotmy(I,J)).and.(.not.fleuvemy(I,J))) then ! grounded et slowssa 
     125                        Chaly(I,J,K,L)=(Btt(I,J-1,K,L)+Btt(I,J,K,L))*Ffy(I,J,L) !& 
    110126                    !                      *Ro*G*Ee(K)**(Glen(L)+1)/Cp(I,J,K) 
    111                  else if (fleuvemy(I,J)) then  ! Ice Streams 
    112                     Chaly(I,J,K,L)=0. 
    113                  else                      ! Ice Shelves 
    114                     Chaly(I,J,K,L)=0. 
    115                  endif 
    116  
    117               end do 
    118            end do 
    119         end do 
    120      end do 
     127                    else if (fleuvemy(I,J)) then  ! Ice Streams 
     128                        Chaly(I,J,K,L)=0. 
     129                    else                      ! Ice Shelves 
     130                        Chaly(I,J,K,L)=0. 
     131                    endif 
     132 
     133                   end do 
     134            end do 
     135      end do 
     136     end do 
     137     !$OMP END DO 
     138      
    121139 
    122140     !         Nouvelle Formulation De Chaldef_maj(I,J,K), Le 4 Vient Des Moyennes 
     
    125143     !         Ancienne Formulation Chal=(Ro*G*H(I,J))**4*(Sx2+Sy2)*(Sx*Sx+Sy*Sy)  
    126144 
    127      do K=2,Nz 
    128         do J=1,Ny-1 
    129            do I=1,Nx-1 
    130  
     145    !$OMP DO COLLAPSE(2) 
     146    do K=2,Nz 
     147      do J=1,Ny-1 
     148            do I=1,Nx-1 
    131149              ! Modif Christophe Mars 2000 : Chalx Et Chaly Sont A 4 Dim 
    132150              Chaldef_maj(I,J,K)= 0. 
     
    152170        end do 
    153171     end do 
     172     !$OMP END DO NOWAIT 
     173           
    154174     ! Chaleur Produite A La Base Par Le Glissement 
     175     !$OMP DO 
    155176     do J=2,Ny 
    156177        do I=2,Nx 
     
    168189           endif 
    169190 
    170         end do 
    171      end do 
    172  
     191        end do    
     192     end do 
     193     !$OMP END DO 
     194           
    173195     !  Boundary Condition Ice-Rock Interface  
    174196     K=Nz 
    175197 
     198     !$OMP DO 
    176199     do J=2,Ny-1 
    177200        do I=2,Nx-1 
     
    227250        end do 
    228251     end do 
    229  
     252     !$OMP END DO 
     253     !$OMP END PARALLEL 
     254      
    230255 
    231256  case (2)             ! Q_prod_centre : Calcul Avec La Somme Des Carres 
     
    904929 
    905930  end select 
     931 
    906932end subroutine Qprod_ice 
Note: See TracChangeset for help on using the changeset viewer.