- Timestamp:
- Mar 15, 2019 11:15:38 AM (6 years ago)
- Location:
- palm/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/chem_gasphase_mod.f90
r3789 r3797 98 98 99 99 LOGICAL :: data_loaded = .FALSE. 100 REAL(dp), POINTER, DIMENSION(:), CONTIGUOUS :: var 100 101 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 101 102 ! … … 113 114 ! 114 115 ! File : chem_gasphase_mod_Parameters.f90 115 ! Time : Fri Mar 8 19:01:032019116 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm116 ! Time : Fri Mar 15 12:08:06 2019 117 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 117 118 ! Equation file : chem_gasphase_mod.kpp 118 119 ! Output root filename : chem_gasphase_mod … … 190 191 ! 191 192 ! File : chem_gasphase_mod_Global.f90 192 ! Time : Fri Mar 8 19:01:032019193 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm193 ! Time : Fri Mar 15 12:08:06 2019 194 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 194 195 ! Equation file : chem_gasphase_mod.kpp 195 196 ! Output root filename : chem_gasphase_mod … … 205 206 206 207 ! C - Concentration of all species 207 REAL(kind=dp) :: c(nspec)208 REAL(kind=dp), TARGET :: c(nspec) 208 209 ! VAR - Concentrations of variable species (global) 209 REAL(kind=dp):: var(nvar) 210 ! REAL(kind=dp):: var(nvar) var is now POINTER 210 211 ! FIX - Concentrations of fixed species (global) 211 212 REAL(kind=dp):: fix(nfix) 212 213 ! VAR,FIX are chunks of array C 213 EQUIVALENCE( c(1), var(1))214 214 ! RCONST - Rate constants (global) 215 215 REAL(kind=dp):: rconst(nreact) … … 256 256 ! 257 257 ! File : chem_gasphase_mod_JacobianSP.f90 258 ! Time : Fri Mar 8 19:01:032019259 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm258 ! Time : Fri Mar 15 12:08:06 2019 259 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 260 260 ! Equation file : chem_gasphase_mod.kpp 261 261 ! Output root filename : chem_gasphase_mod … … 300 300 ! 301 301 ! File : chem_gasphase_mod_Monitor.f90 302 ! Time : Fri Mar 8 19:01:032019303 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm302 ! Time : Fri Mar 15 12:08:06 2019 303 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 304 304 ! Equation file : chem_gasphase_mod.kpp 305 305 ! Output root filename : chem_gasphase_mod … … 362 362 ! 363 363 ! File : chem_gasphase_mod_Initialize.f90 364 ! Time : Fri Mar 8 19:01:032019365 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm364 ! Time : Fri Mar 15 12:08:06 2019 365 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 366 366 ! Equation file : chem_gasphase_mod.kpp 367 367 ! Output root filename : chem_gasphase_mod … … 388 388 ! 389 389 ! File : chem_gasphase_mod_Integrator.f90 390 ! Time : Fri Mar 8 19:01:032019391 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm390 ! Time : Fri Mar 15 12:08:06 2019 391 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 392 392 ! Equation file : chem_gasphase_mod.kpp 393 393 ! Output root filename : chem_gasphase_mod … … 446 446 ! 447 447 ! File : chem_gasphase_mod_LinearAlgebra.f90 448 ! Time : Fri Mar 8 19:01:032019449 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm448 ! Time : Fri Mar 15 12:08:06 2019 449 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 450 450 ! Equation file : chem_gasphase_mod.kpp 451 451 ! Output root filename : chem_gasphase_mod … … 473 473 ! 474 474 ! File : chem_gasphase_mod_Jacobian.f90 475 ! Time : Fri Mar 8 19:01:032019476 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm475 ! Time : Fri Mar 15 12:08:06 2019 476 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 477 477 ! Equation file : chem_gasphase_mod.kpp 478 478 ! Output root filename : chem_gasphase_mod … … 500 500 ! 501 501 ! File : chem_gasphase_mod_Function.f90 502 ! Time : Fri Mar 8 19:01:032019503 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm502 ! Time : Fri Mar 15 12:08:06 2019 503 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 504 504 ! Equation file : chem_gasphase_mod.kpp 505 505 ! Output root filename : chem_gasphase_mod … … 529 529 ! 530 530 ! File : chem_gasphase_mod_Rates.f90 531 ! Time : Fri Mar 8 19:01:032019532 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm531 ! Time : Fri Mar 15 12:08:06 2019 532 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 533 533 ! Equation file : chem_gasphase_mod.kpp 534 534 ! Output root filename : chem_gasphase_mod … … 555 555 ! 556 556 ! File : chem_gasphase_mod_Util.f90 557 ! Time : Fri Mar 8 19:01:032019558 ! Working directory : /home/forkel-r/palmstuff/work/trunk201903 08/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm557 ! Time : Fri Mar 15 12:08:06 2019 558 ! Working directory : /home/forkel-r/palmstuff/work/trunk20190315/UTIL/chemistry/gasphase_preproc/tmp_kpp4palm 559 559 ! Equation file : chem_gasphase_mod.kpp 560 560 ! Output root filename : chem_gasphase_mod … … 670 670 END INTERFACE chem_gasphase_integrate 671 671 672 673 ! openmp directives generated by kp4 674 675 !$OMP THREADPRIVATE (vl, vl_glo, is, ie, data_loaded) 676 !$OMP THREADPRIVATE (c, var, fix, rconst, time, temp, stepmin, cfactor) 677 !$OMP THREADPRIVATE (qvap, fakt, cs_mech, a, icntrl, rcntrl) 672 678 673 679 CONTAINS … … 2308 2314 IF (PRESENT (rcntrl_i)) rcntrl = rcntrl_i 2309 2315 2316 var => c(1:nvar) 2317 2310 2318 vl_glo = size(tempi, 1) 2311 2319 -
palm/trunk/SOURCE/prognostic_equations.f90
r3771 r3797 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Call chem_integegrate in OpenMP loop (ketelsen) 28 ! 29 ! 30 ! 3771 2019-02-28 12:19:33Z raasch 27 31 ! preprocessor directivs fro rrtmg added 28 32 ! … … 527 531 CALL photolysis_control 528 532 ENDIF 529 DO i = nxl, nxr 530 DO j = nys, nyn 531 532 IF ( intermediate_timestep_count == 1 .OR. & 533 call_chem_at_all_substeps ) THEN 534 535 CALL cpu_log( log_point_s(19), 'chem.reactions', 'start' ) 533 534 IF ( intermediate_timestep_count == 1 .OR. & 535 call_chem_at_all_substeps ) THEN 536 537 CALL cpu_log( log_point_s(19), 'chem.reactions', 'start' ) 538 !$OMP PARALLEL PRIVATE (i,j) 539 !$OMP DO schedule(static,1) 540 DO i = nxl, nxr 541 DO j = nys, nyn 536 542 CALL chem_integrate (i,j) 537 CALL cpu_log( log_point_s(19), 'chem.reactions', 'stop' ) 538 539 IF ( do_depo ) THEN 540 CALL cpu_log( log_point_s(24), 'chem.deposition', 'start' ) 543 ENDDO 544 ENDDO 545 !$OMP END PARALLEL 546 CALL cpu_log( log_point_s(19), 'chem.reactions', 'stop' ) 547 548 IF ( do_depo ) THEN 549 CALL cpu_log( log_point_s(24), 'chem.deposition', 'start' ) 550 DO i = nxl, nxr 551 DO j = nys, nyn 541 552 CALL chem_depo(i,j) 542 CALL cpu_log( log_point_s(24), 'chem.deposition', 'stop' )543 ENDIF544 ENDIF545 END DO546 END DO553 ENDDO 554 ENDDO 555 CALL cpu_log( log_point_s(24), 'chem.deposition', 'stop' ) 556 ENDIF 557 ENDIF 547 558 ENDIF 548 559 ! -
palm/trunk/UTIL/chemistry/gasphase_preproc/kpp4palm/src/create_kpp_module.C
r3789 r3797 17 17 //----------------- 18 18 //$Id: create_kpp_module.C 3453 2018-10-30 13:21:51Z forkel $ 19 // OpenMP version (15.03.2019, ketelsen) 20 // 19 21 // Added vector switch Kacc,Krej,IERRV, Commented add_line for istatf, (05.03.2019, forkel) 20 22 // added ,pe after ierr_u, … … 233 235 234 236 mz_kpp.add_line(" "); 237 238 // Declare variables THREADPRIVATE for OpenMP version 239 240 mz_kpp.add_line(" ! OpenMP directives generated by kp4 "); 241 mz_kpp.add_line(" "); 242 mz_kpp.add_line(" !$OMP THREADPRIVATE (vl,vl_glo,is,ie,data_loaded)"); 243 mz_kpp.add_line(" !$OMP THREADPRIVATE (c,var,fix,rconst,time,temp,stepmin,cfactor)"); 244 mz_kpp.add_line(" !$OMP THREADPRIVATE (qvap,fakt,cs_mech,a,icntrl,rcntrl)"); 245 mz_kpp.add_line(" "); 246 if(kpp_switches.is_vector()) { 247 mz_kpp.add_line(" ! Vector mode Only "); 248 mz_kpp.add_line(" "); 249 mz_kpp.add_line(" !$OMP THREADPRIVATE (kacc,krej,ierrv)"); 250 mz_kpp.add_line(" !$OMP THREADPRIVATE (kpoints,kpoints_SAVE,index_org,done_check,index_step,cell_done)"); 251 mz_kpp.add_line(" !$OMP THREADPRIVATE (f_done,kacc_done,krej_done,ierr_done,compress_done)"); 252 mz_kpp.add_line(" "); 253 } 235 254 236 255 … … 444 463 } 445 464 mz_kpp.add_line(" logical :: data_loaded = .false. "); 465 if(kpp_switches.is_vector()) { 466 mz_kpp.add_line(" REAL(dp),POINTER,DIMENSION(:,:),CONTIGUOUS :: var "); 467 } else { 468 mz_kpp.add_line(" REAL(dp),POINTER,DIMENSION(:),CONTIGUOUS :: var "); 469 } 446 470 in.close(); 447 471 … … 547 571 kppi.add_line(" if (present (rcntrl_i) ) rcntrl = rcntrl_i "); 548 572 kppi.add_line(" "); 573 if(kpp_switches.is_vector()) { 574 kppi.add_line(" var => c(:,1:nvar) "); 575 } else { 576 kppi.add_line(" var => c(1:nvar) "); 577 } 578 kppi.add_line(" "); 549 579 kppi.add_line(" vl_glo = size(tempi,1) "); 550 580 kppi.add_line(" "); -
palm/trunk/UTIL/chemistry/gasphase_preproc/kpp4palm/src/fortran_file.C
r3789 r3797 18 18 //----------------- 19 19 //$Id: 20 // OpenMP version (15.03.2019, ketelsen) 20 21 // 21 // removal of unnecessary variables (Ntotal, TSTART) 22 // removal of unnecessary variables (Ntotal, TSTART) (08.03.2019 forkel) 22 23 // 23 24 // Added vector switch and creation of dimension statement (rev. 3260, 18.09.2018, ketelsen) … … 333 334 lo_line.insert(0,"!DELETE "); 334 335 } 336 // Delete KPP-generated EQUIVALENCE line (var is POINTER now) 337 if(ip->get_token(0) == "EQUIVALENCE" && ip->get_token_size() >= 1) { 338 lo_line.insert(0,"!DELETE "); 339 } 335 340 336 341 // Remove REAL(kind=dp):: sun … … 429 434 } 430 435 431 432 433 436 // Make ind_ variables public 437 434 438 if(ip->get_token(3).substr(0,4) == "ind_") { 435 439 global_substitute (lo_line,"PARAMETER","PARAMETER, PUBLIC"); … … 670 674 ip->global_substitute(", - ",", -"); 671 675 676 // Replace Roundoff = WLAMCH('E') since WLAMCH does not work everywhere 677 ip->global_substitute("Roundoff = WLAMCH('E')","roundoff = epsilon(one)"); 678 672 679 // Now do some cosmetics to adapt the KPP generated output a bit o the looks of PALM, 673 680 // i.e. add some blanks, convert all to lowercase except Fortran language elements, etc. 674 // Replace Roundoff = WLAMCH('E') by Roundoff = epsilon(one)675 ip->global_substitute("Roundoff = WLAMCH('E')","roundoff = epsilon(one)");676 681 lo_line = ip->get_line(); 677 682 if(lo_line.find("'",0) == string::npos) { // No substitution in line with strings … … 706 711 global_substitute(lo_line,"E+ ","E+"); 707 712 global_substitute(lo_line,"E- ","E-"); 713 // Set all characters to lowercase 708 714 ip->global_subtolower(lo_line); 715 // Restore OMP directives: The next 2 lines are not only cosmetics! 716 global_substitute(lo_line,"!$omp","!$OMP"); 717 global_substitute(lo_line,"threadprivate","THREADPRIVATE"); 718 709 719 global_substitute(lo_line,"allocated","ALLOCATED"); 710 720 global_substitute(lo_line,"allocatable","ALLOCATABLE"); … … 714 724 global_substitute(lo_line,"character","CHARACTER"); 715 725 global_substitute(lo_line,"contains","CONTAINS"); 726 global_substitute(lo_line,"contiguous","CONTIGUOUS"); 716 727 global_substitute(lo_line,"deallocate","DEALLOCATE"); 717 728 global_substitute(lo_line,"allocate","ALLOCATE"); … … 728 739 global_substitute(lo_line,"tEND","tend"); 729 740 global_substitute(lo_line,"#ENDIF","#endif"); 730 global_substitute(lo_line,"equivalence","EQUIVALENCE");731 741 global_substitute(lo_line,"function","FUNCTION"); 732 742 global_substitute(lo_line,"if(","IF ("); … … 743 753 global_substitute(lo_line,"optional","OPTIONAL"); 744 754 global_substitute(lo_line,"parameter","PARAMETER"); 755 global_substitute(lo_line,"pointer","POINTER"); 745 756 global_substitute(lo_line,"present","PRESENT"); 746 757 global_substitute(lo_line,"private","PRIVATE"); … … 752 763 global_substitute(lo_line,"save","SAVE"); 753 764 global_substitute(lo_line,"subroutine","SUBROUTINE"); 765 global_substitute(lo_line,"target","TARGET"); 754 766 global_substitute(lo_line,"then","THEN"); 755 767 global_substitute(lo_line,"where","WHERE"); … … 761 773 global_substitute(lo_line,"(inout)","(INOUT)"); 762 774 global_substitute(lo_line,"\t"," "); 775 776 // Skalar Version 777 global_substitute(lo_line," REAL(kind=dp):: var(nvar)","! REAL(kind=dp):: var(nvar) var is now POINTER"); 778 global_substitute(lo_line,"REAL(kind=dp):: c(nspec)","REAL(kind=dp), TARGET :: c(nspec)"); 779 // Vektor Version 780 global_substitute(lo_line," REAL(kind=dp):: var (vl_dim, nvar)","! REAL(kind=dp):: var (vl_dim, nvar) var is now POINTER"); 781 global_substitute(lo_line,"REAL(kind=dp):: c (vl_dim, nspec)","REAL(kind=dp), TARGET :: c (vl_dim, nspec)"); 782 763 783 // cout << "HIER1 " << lo_line <<endl; 764 784 }
Note: See TracChangeset
for help on using the changeset viewer.