Changeset 824
- Timestamp:
- Feb 17, 2012 9:09:57 AM (13 years ago)
- Location:
- palm/trunk
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SCRIPTS/mrun
r823 r824 247 247 # 16/02/12 - BjornM - bugfix: replaced $localhost by $host in the ENVPAR 248 248 # file, which is generated for the namelist file check 249 # 17/02/12 - Siggi - -z included in description of options (mrun ?) 250 251 249 252 250 253 # VARIABLENVEREINBARUNGEN + DEFAULTWERTE … … 597 600 printf "\n -Y run coupled model, \"#1 #2\" with" 598 601 printf "\n #1 atmosphere and #2 ocean processors \"#/2 #/2\" depending on -X" 602 printf "\n -z no parameter file check ---" 599 603 printf "\n " 600 604 printf "\n Possible values of positional parameter <modus>:" -
palm/trunk/SOURCE/advec_particles.f90
r800 r824 4 4 ! Current revisions: 5 5 ! ------------------ 6 ! 6 ! droplet growth by condensation may include curvature and solution effects. 7 ! initialisation of temporary particle array for resorting removed. 8 ! particle attributes speed_x|y|z_sgs renamed rvar1|2|3. 7 9 ! 8 10 ! Former revisions: … … 137 139 IMPLICIT NONE 138 140 139 INTEGER :: agp, deleted_particles, deleted_tails, i, ie, ii, inc, is, j, & 140 jj, js, k, kk, kw, m, n, nc, nd, nn, num_gp, pse, psi, & 141 INTEGER :: agp, deleted_particles, deleted_tails, i, ie, ii, inc, & 142 internal_timestep_count, is, j, & 143 jj, js, jtry, k, kk, kw, m, n, nc, nd, nn, num_gp, pse, psi, & 141 144 tlength, trlp_count, trlp_count_sum, trlp_count_recv, & 142 145 trlp_count_recv_sum, trlpt_count, trlpt_count_recv, & … … 150 153 INTEGER :: gp_outside_of_building(1:8) 151 154 155 INTEGER, PARAMETER :: maxtry = 40 ! for Rosenbrock method 156 152 157 LOGICAL :: dt_3d_reached, dt_3d_reached_l, prt_position 153 158 154 REAL :: aa, arg, bb, cc, dd, delta_r, delta_v, dens_ratio, de_dt, & 155 de_dt_min, de_dx_int, de_dx_int_l, de_dx_int_u, de_dy_int, & 156 de_dy_int_l, de_dy_int_u, de_dz_int, de_dz_int_l, de_dz_int_u, & 157 diss_int, diss_int_l, diss_int_u, distance, dt_gap, & 158 dt_particle, dt_particle_m, d_radius, d_sum, e_a, e_int, & 159 e_int_l, e_int_u, e_mean_int, e_s, exp_arg, exp_term, fs_int, & 160 gg, integral, lagr_timescale, lw_max, mean_r, new_r, p_int, & 161 pt_int, pt_int_l, pt_int_u, q_int, q_int_l, q_int_u, ql_int, & 162 ql_int_l, ql_int_u, random_gauss, sl_r3, sl_r4, t_int, u_int, & 163 u_int_l, u_int_u,vv_int, v_int, v_int_l, v_int_u, w_int, & 164 w_int_l, w_int_u, x, y 159 REAL :: aa, afactor, arg, bb, cc, dd, ddenom, delta_r, delta_v, & 160 dens_ratio, de_dt, de_dt_min, de_dx_int, de_dx_int_l, & 161 de_dx_int_u, de_dy_int, de_dy_int_l, de_dy_int_u, de_dz_int, & 162 de_dz_int_l, de_dz_int_u, diss_int, diss_int_l, diss_int_u, & 163 distance, drdt, drdt_ini, drdt_m, dt_ros, dt_ros_last, & 164 dt_ros_next, dt_ros_sum, dt_ros_sum_ini, d2rdt2, d2rdtdr, & 165 dt_gap, dt_particle, dt_particle_m, d_sum, e_a, e_int, & 166 e_int_l, e_int_u, e_mean_int, e_s, err_ros, errmax, exp_arg, & 167 exp_term, fs_int, gg, g1, g2, g3, g4, integral, & 168 lagr_timescale, lw_max, mean_r, new_r, p_int, pt_int, & 169 pt_int_l, pt_int_u, q_int, q_int_l, q_int_u, ql_int, ql_int_l, & 170 ql_int_u, random_gauss, r_ros, r_ros_ini, sigma, sl_r3, sl_r4, & 171 t_int, u_int, u_int_l, u_int_u,vv_int, v_int, v_int_l, & 172 v_int_u, w_int, w_int_l, w_int_u, x, y 173 ! 174 !-- Parameters for Rosenbrock method 175 REAL, PARAMETER :: a21 = 2.0, a31 = 48.0/25.0, a32 = 6.0/25.0, & 176 a2x = 1.0, a3x = 3.0/5.0, b1 = 19.0/9.0, b2 = 0.5, & 177 b3 = 25.0/108.0, b4 = 125.0/108.0, c21 = -8.0, & 178 c31 = 372.0/25.0, c32 = 12.0/5.0, & 179 c41 = -112.0/125.0, c42 = -54.0/125.0, & 180 c43 = -2.0/5.0, c1x = 0.5, c2x= -3.0/2.0, & 181 c3x = 121.0/50.0, c4x = 29.0/250.0, & 182 errcon = 0.1296, e1 = 17.0/54.0, e2 = 7.0/36.0, & 183 e3 = 0.0, e4 = 125.0/108.0, gam = 0.5, grow = 1.5, & 184 pgrow = -0.25, pshrnk = -1.0/3.0, shrnk = 0.5 165 185 166 186 REAL, DIMENSION(1:30) :: de_dxi, de_dyi, de_dzi, dissi, d_gp_pl, ei … … 337 357 ! 338 358 !-- Change in radius by condensation/evaporation 339 !-- ATTENTION: this is only an approximation for large radii 340 arg = particles(n)%radius**2 + 2.0 * dt_3d * & 341 ( e_a / e_s - 1.0 ) / & 342 ( ( l_d_rv / t_int - 1.0 ) * l_v * rho_l / t_int / & 343 thermal_conductivity_l + & 344 rho_l * r_v * t_int / diff_coeff_l / e_s ) 345 IF ( arg < 1.0E-14 ) THEN 346 new_r = 1.0E-7 359 IF ( curvature_solution_effects .AND. particles(n)%radius < 1.0E-6 ) & 360 THEN 361 ! 362 !-- Curvature and solutions effects are included in growth equation. 363 !-- Change in Radius is calculated with 4th-order Rosenbrock method 364 !-- for stiff o.d.e's with monitoring local truncation error to adjust 365 !-- stepsize (see Numerical recipes in FORTRAN, 2nd edition, p. 731). 366 !-- For larger radii the simple analytic method (see ELSE) gives 367 !-- almost the same results. 368 ! 369 !-- Surface tension after (Straka, 2009) 370 sigma = 0.0761 - 0.00155 * ( t_int - 273.15 ) 371 372 r_ros = particles(n)%radius 373 dt_ros_sum = 0.0 ! internal integrated time (s) 374 internal_timestep_count = 0 375 376 ddenom = 1.0 / ( rho_l * r_v * t_int / ( e_s * diff_coeff_l ) + & 377 ( l_v / ( r_v * t_int ) - 1.0 ) * & 378 rho_l * l_v / ( thermal_conductivity_l * t_int )& 379 ) 380 381 afactor = 2.0 * sigma / ( rho_l * r_v * t_int ) 382 383 IF ( particles(n)%rvar3 == -9999999.9 ) THEN 384 ! 385 !-- First particle timestep. Derivative has to be calculated. 386 drdt_m = ddenom / r_ros * ( e_a / e_s - 1.0 - & 387 afactor / r_ros + & 388 bfactor / r_ros**3 ) 389 ELSE 390 ! 391 !-- Take value from last PALM timestep 392 drdt_m = particles(n)%rvar3 393 ENDIF 394 ! 395 !-- Take internal timestep values from the end of last PALM timestep 396 dt_ros_last = particles(n)%rvar1 397 dt_ros_next = particles(n)%rvar2 398 ! 399 !-- Internal timestep must not be larger than PALM timestep 400 dt_ros = MIN( dt_ros_next, dt_3d ) 401 ! 402 !-- Integrate growth equation in time unless PALM timestep is reached 403 DO WHILE ( dt_ros_sum < dt_3d ) 404 405 internal_timestep_count = internal_timestep_count + 1 406 407 ! 408 !-- Derivative at starting value 409 drdt = ddenom / r_ros * ( e_a / e_s - 1.0 - afactor / r_ros + & 410 bfactor / r_ros**3 ) 411 drdt_ini = drdt 412 dt_ros_sum_ini = dt_ros_sum 413 r_ros_ini = r_ros 414 415 ! 416 !-- Calculate time derivative of dr/dt 417 d2rdt2 = ( drdt - drdt_m ) / dt_ros_last 418 419 ! 420 !-- Calculate radial derivative of dr/dt 421 d2rdtdr = ddenom * ( ( 1.0 - e_a/e_s ) / r_ros**2 + & 422 2.0 * afactor / r_ros**3 - & 423 4.0 * bfactor / r_ros**5 ) 424 ! 425 !-- Adjust stepsize unless required accuracy is reached 426 DO jtry = 1, maxtry+1 427 428 IF ( jtry == maxtry+1 ) THEN 429 message_string = 'maxtry > 40 in Rosenbrock method' 430 CALL message( 'advec_particles', 'PA0347', 2, 2, 0, 6, 0 ) 431 ENDIF 432 433 aa = 1.0 / ( gam * dt_ros ) - d2rdtdr 434 g1 = ( drdt_ini + dt_ros * c1x * d2rdt2 ) / aa 435 r_ros = r_ros_ini + a21 * g1 436 drdt = ddenom / r_ros * ( e_a / e_s - 1.0 - & 437 afactor / r_ros + & 438 bfactor / r_ros**3 ) 439 440 g2 = ( drdt + dt_ros * c2x * d2rdt2 + c21 * g1 / dt_ros )& 441 / aa 442 r_ros = r_ros_ini + a31 * g1 + a32 * g2 443 drdt = ddenom / r_ros * ( e_a / e_s - 1.0 - & 444 afactor / r_ros + & 445 bfactor / r_ros**3 ) 446 447 g3 = ( drdt + dt_ros * c3x * d2rdt2 + & 448 ( c31 * g1 + c32 * g2 ) / dt_ros ) / aa 449 g4 = ( drdt + dt_ros * c4x * d2rdt2 + & 450 ( c41 * g1 + c42 * g2 + c43 * g3 ) / dt_ros ) / aa 451 r_ros = r_ros_ini + b1 * g1 + b2 * g2 + b3 * g3 + b4 * g4 452 453 dt_ros_sum = dt_ros_sum_ini + dt_ros 454 455 IF ( dt_ros_sum == dt_ros_sum_ini ) THEN 456 message_string = 'zero stepsize in Rosenbrock method' 457 CALL message( 'advec_particles', 'PA0348', 2, 2, 0, 6, 0 ) 458 ENDIF 459 ! 460 !-- Calculate error 461 err_ros = e1*g1 + e2*g2 + e3*g3 + e4*g4 462 errmax = 0.0 463 errmax = MAX( errmax, ABS( err_ros / r_ros_ini ) ) / eps_ros 464 ! 465 !-- Leave loop if accuracy is sufficient, otherwise try again 466 !-- with a reduced stepsize 467 IF ( errmax <= 1.0 ) THEN 468 EXIT 469 ELSE 470 dt_ros = SIGN( & 471 MAX( ABS( 0.9 * dt_ros * errmax**pshrnk ), & 472 shrnk * ABS( dt_ros ) ), & 473 dt_ros & 474 ) 475 ENDIF 476 477 ENDDO ! loop for stepsize adjustment 478 479 ! 480 !-- Calculate next internal timestep 481 IF ( errmax > errcon ) THEN 482 dt_ros_next = 0.9 * dt_ros * errmax**pgrow 483 ELSE 484 dt_ros_next = grow * dt_ros 485 ENDIF 486 487 ! 488 !-- Estimated timestep is reduced if the PALM time step is exceeded 489 dt_ros_last = dt_ros 490 IF ( ( dt_ros_next + dt_ros_sum ) >= dt_3d ) THEN 491 dt_ros = dt_3d - dt_ros_sum 492 ELSE 493 dt_ros = dt_ros_next 494 ENDIF 495 496 drdt_m = drdt 497 498 ENDDO 499 ! 500 !-- Store derivative and internal timestep values for next PALM step 501 particles(n)%rvar1 = dt_ros_last 502 particles(n)%rvar2 = dt_ros_next 503 particles(n)%rvar3 = drdt_m 504 505 new_r = r_ros 506 ! 507 !-- Radius should not fall below 1E-8 because Rosenbrock method may 508 !-- lead to errors otherwise 509 new_r = MAX( new_r, 1.0E-8 ) 510 347 511 ELSE 348 new_r = SQRT( arg ) 512 ! 513 !-- Approximation for large radii, where curvature and solution 514 !-- effects can be neglected 515 arg = particles(n)%radius**2 + 2.0 * dt_3d * & 516 ( e_a / e_s - 1.0 ) / & 517 ( ( l_d_rv / t_int - 1.0 ) * l_v * rho_l / t_int / & 518 thermal_conductivity_l + & 519 rho_l * r_v * t_int / diff_coeff_l / e_s ) 520 IF ( arg < 1.0E-14 ) THEN 521 new_r = 1.0E-7 522 ELSE 523 new_r = SQRT( arg ) 524 ENDIF 525 349 526 ENDIF 350 527 351 528 delta_r = new_r - particles(n)%radius 352 353 ! NOTE: this is the correct formula (indipendent of radius).354 ! nevertheless, it give wrong results for large timesteps355 ! d_radius = 1.0 / particles(n)%radius356 ! delta_r = d_radius * ( e_a / e_s - 1.0 - 3.3E-7 / t_int * d_radius + &357 ! b_cond * d_radius**3 ) / &358 ! ( ( l_d_rv / t_int - 1.0 ) * l_v * rho_l / t_int / &359 ! thermal_conductivity_l + &360 ! rho_l * r_v * t_int / diff_coeff_l / e_s ) * dt_3d361 362 ! new_r = particles(n)%radius + delta_r363 ! IF ( new_r < 1.0E-7 ) new_r = 1.0E-7364 529 365 530 ! … … 389 554 WRITE( message_string, * ) '#1 k=',k,' j=',j,' i=',i, & 390 555 ' e_s=',e_s, ' e_a=',e_a,' t_int=',t_int, & 391 ' &d _radius=',d_radius,' delta_r=',delta_r,&556 ' &delta_r=',delta_r, & 392 557 ' particle_radius=',particles(n)%radius 393 558 CALL message( 'advec_particles', 'PA0144', 2, 2, -1, 6, 1 ) … … 1965 2130 !-- [-5.0*sigma, 5.0*sigma] in order to prevent the SGS velocities 1966 2131 !-- from becoming unrealistically large. 1967 particles(n)% speed_x_sgs = SQRT( 2.0 * sgs_wfu_part * e_int ) *&1968 ( random_gauss( iran_part, 5.0 ) 2132 particles(n)%rvar1 = SQRT( 2.0 * sgs_wfu_part * e_int ) * & 2133 ( random_gauss( iran_part, 5.0 ) & 1969 2134 - 1.0 ) 1970 particles(n)% speed_y_sgs = SQRT( 2.0 * sgs_wfv_part * e_int ) *&1971 ( random_gauss( iran_part, 5.0 ) 2135 particles(n)%rvar2 = SQRT( 2.0 * sgs_wfv_part * e_int ) * & 2136 ( random_gauss( iran_part, 5.0 ) & 1972 2137 - 1.0 ) 1973 particles(n)% speed_z_sgs = SQRT( 2.0 * sgs_wfw_part * e_int ) *&1974 ( random_gauss( iran_part, 5.0 ) 2138 particles(n)%rvar3 = SQRT( 2.0 * sgs_wfw_part * e_int ) * & 2139 ( random_gauss( iran_part, 5.0 ) & 1975 2140 - 1.0 ) 1976 2141 … … 2003 2168 ENDIF 2004 2169 2005 particles(n)% speed_x_sgs = particles(n)%speed_x_sgs -&2006 fs_int * c_0 * diss_int * particles(n)% speed_x_sgs *&2170 particles(n)%rvar1 = particles(n)%rvar1 - & 2171 fs_int * c_0 * diss_int * particles(n)%rvar1 * & 2007 2172 dt_particle / ( 4.0 * sgs_wfu_part * e_int ) + & 2008 2173 ( 2.0 * sgs_wfu_part * de_dt * & 2009 particles(n)% speed_x_sgs /&2174 particles(n)%rvar1 / & 2010 2175 ( 2.0 * sgs_wfu_part * e_int ) + de_dx_int & 2011 2176 ) * dt_particle / 2.0 + & … … 2014 2179 SQRT( dt_particle ) 2015 2180 2016 particles(n)% speed_y_sgs = particles(n)%speed_y_sgs -&2017 fs_int * c_0 * diss_int * particles(n)% speed_y_sgs *&2181 particles(n)%rvar2 = particles(n)%rvar2 - & 2182 fs_int * c_0 * diss_int * particles(n)%rvar2 * & 2018 2183 dt_particle / ( 4.0 * sgs_wfv_part * e_int ) + & 2019 2184 ( 2.0 * sgs_wfv_part * de_dt * & 2020 particles(n)% speed_y_sgs /&2185 particles(n)%rvar2 / & 2021 2186 ( 2.0 * sgs_wfv_part * e_int ) + de_dy_int & 2022 2187 ) * dt_particle / 2.0 + & … … 2025 2190 SQRT( dt_particle ) 2026 2191 2027 particles(n)% speed_z_sgs = particles(n)%speed_z_sgs- &2028 fs_int * c_0 * diss_int * particles(n)% speed_z_sgs* &2192 particles(n)%rvar3 = particles(n)%rvar3 - & 2193 fs_int * c_0 * diss_int * particles(n)%rvar3 * & 2029 2194 dt_particle / ( 4.0 * sgs_wfw_part * e_int ) + & 2030 2195 ( 2.0 * sgs_wfw_part * de_dt * & 2031 particles(n)% speed_z_sgs/ &2196 particles(n)%rvar3 / & 2032 2197 ( 2.0 * sgs_wfw_part * e_int ) + de_dz_int & 2033 2198 ) * dt_particle / 2.0 + & … … 2038 2203 ENDIF 2039 2204 2040 u_int = u_int + particles(n)% speed_x_sgs2041 v_int = v_int + particles(n)% speed_y_sgs2042 w_int = w_int + particles(n)% speed_z_sgs2205 u_int = u_int + particles(n)%rvar1 2206 v_int = v_int + particles(n)%rvar2 2207 w_int = w_int + particles(n)%rvar3 2043 2208 2044 2209 ! … … 3378 3543 particles(n)%speed_z = -particles(n)%speed_z 3379 3544 IF ( use_sgs_for_particles .AND. & 3380 particles(n)% speed_z_sgs> 0.0 ) THEN3381 particles(n)% speed_z_sgs = -particles(n)%speed_z_sgs3545 particles(n)%rvar3 > 0.0 ) THEN 3546 particles(n)%rvar3 = -particles(n)%rvar3 3382 3547 ENDIF 3383 3548 IF ( use_particle_tails .AND. nn /= 0 ) THEN … … 3403 3568 particles(n)%speed_z = -particles(n)%speed_z 3404 3569 IF ( use_sgs_for_particles .AND. & 3405 particles(n)% speed_z_sgs< 0.0 ) THEN3406 particles(n)% speed_z_sgs = -particles(n)%speed_z_sgs3570 particles(n)%rvar3 < 0.0 ) THEN 3571 particles(n)%rvar3 = -particles(n)%rvar3 3407 3572 ENDIF 3408 3573 IF ( use_particle_tails .AND. nn /= 0 ) THEN … … 4187 4352 4188 4353 particles_temp => part_1 4189 part_1 = particle_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, &4190 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, &4191 0.0, 0, 0, 0, 0 )4354 ! part_1 = particle_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 4355 ! 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 4356 ! 0.0, 0, 0, 0, 0 ) 4192 4357 4193 4358 CASE ( 1 ) 4194 4359 4195 4360 particles_temp => part_2 4196 part_2 = particle_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, &4197 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, &4198 0.0, 0, 0, 0, 0 )4361 ! part_2 = particle_type( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 4362 ! 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, & 4363 ! 0.0, 0, 0, 0, 0 ) 4199 4364 4200 4365 END SELECT -
palm/trunk/SOURCE/check_parameters.f90
r810 r824 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! 6 ! check for curvature_solution_effects 7 7 ! 8 8 ! Former revisions: … … 165 165 166 166 USE arrays_3d 167 USE cloud_parameters 167 168 USE constants 168 169 USE control_parameters … … 660 661 ENDIF 661 662 663 IF ( use_sgs_for_particles .AND. curvature_solution_effects ) THEN 664 message_string = 'use_sgs_for_particles = .TRUE. not allowed with ' // & 665 'curvature_solution_effects = .TRUE.' 666 CALL message( 'check_parameters', 'PA0349', 1, 2, 0, 6, 0 ) 667 ENDIF 668 662 669 ! 663 670 !-- Timestep schemes: -
palm/trunk/SOURCE/data_output_ptseries.f90
r623 r824 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! 6 ! mean particle radius added as output quantity. 7 ! particle attributes speed_x|y|z_sgs renamed rvar1|2|3. 7 8 ! 8 9 ! Former revisions: … … 87 88 pts_value_l(0,7) = pts_value_l(0,7) + particles(n)%speed_y ! mean v 88 89 pts_value_l(0,8) = pts_value_l(0,8) + particles(n)%speed_z ! mean w 89 pts_value_l(0,9) = pts_value_l(0,9) + & 90 particles(n)%speed_x_sgs ! mean sgsu 91 pts_value_l(0,10) = pts_value_l(0,10) + & 92 particles(n)%speed_y_sgs ! mean sgsv 93 pts_value_l(0,11) = pts_value_l(0,11) + & 94 particles(n)%speed_z_sgs ! mean sgsw 90 pts_value_l(0,9) = pts_value_l(0,9) + particles(n)%rvar1 ! mean sgsu 91 pts_value_l(0,10) = pts_value_l(0,10) + particles(n)%rvar2 ! mean sgsv 92 pts_value_l(0,11) = pts_value_l(0,11) + particles(n)%rvar3 ! mean sgsw 95 93 IF ( particles(n)%speed_z > 0.0 ) THEN 96 94 pts_value_l(0,12) = pts_value_l(0,12) + 1.0 ! # of upward moving prts … … 101 99 particles(n)%speed_z ! mean w down 102 100 ENDIF 103 pts_value_l(0,15) = number_of_particles101 pts_value_l(0,15) = pts_value_l(0,15) + particles(n)%radius 104 102 pts_value_l(0,16) = number_of_particles 103 pts_value_l(0,17) = number_of_particles 105 104 106 105 ! … … 120 119 pts_value_l(j,7) = pts_value_l(j,7) + particles(n)%speed_y 121 120 pts_value_l(j,8) = pts_value_l(j,8) + particles(n)%speed_z 122 pts_value_l(j,9) = pts_value_l(j,9) + particles(n)% speed_x_sgs123 pts_value_l(j,10) = pts_value_l(j,10) + particles(n)% speed_y_sgs124 pts_value_l(j,11) = pts_value_l(j,11) + particles(n)% speed_z_sgs121 pts_value_l(j,9) = pts_value_l(j,9) + particles(n)%rvar1 122 pts_value_l(j,10) = pts_value_l(j,10) + particles(n)%rvar2 123 pts_value_l(j,11) = pts_value_l(j,11) + particles(n)%rvar3 125 124 IF ( particles(n)%speed_z > 0.0 ) THEN 126 125 pts_value_l(j,12) = pts_value_l(j,12) + 1.0 … … 129 128 pts_value_l(j,14) = pts_value_l(j,14) + particles(n)%speed_z 130 129 ENDIF 131 pts_value_l(j,15) = pts_value_l(j,15) + 1.0130 pts_value_l(j,15) = pts_value_l(j,15) + particles(n)%radius 132 131 pts_value_l(j,16) = pts_value_l(j,16) + 1.0 132 pts_value_l(j,17) = pts_value_l(j,17) + 1.0 133 133 134 134 ENDIF … … 142 142 143 143 IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr ) 144 CALL MPI_ALLREDUCE( pts_value_l(0,1), pts_value(0,1), 1 4*inum, MPI_REAL, &144 CALL MPI_ALLREDUCE( pts_value_l(0,1), pts_value(0,1), 15*inum, MPI_REAL, & 145 145 MPI_SUM, comm2d, ierr ) 146 146 IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr ) 147 CALL MPI_ALLREDUCE( pts_value_l(0,1 5), pts_value(0,15), inum, MPI_REAL, &147 CALL MPI_ALLREDUCE( pts_value_l(0,16), pts_value(0,16), inum, MPI_REAL, & 148 148 MPI_MAX, comm2d, ierr ) 149 149 IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr ) 150 CALL MPI_ALLREDUCE( pts_value_l(0,1 6), pts_value(0,16), inum, MPI_REAL, &150 CALL MPI_ALLREDUCE( pts_value_l(0,17), pts_value(0,17), inum, MPI_REAL, & 151 151 MPI_MIN, comm2d, ierr ) 152 152 #else 153 pts_value(:,1:1 6) = pts_value_l(:,1:16)153 pts_value(:,1:17) = pts_value_l(:,1:17) 154 154 #endif 155 155 … … 167 167 IF ( pts_value(j,1) > 0.0 ) THEN 168 168 169 pts_value(j,2:1 4) = pts_value(j,2:14) / pts_value(j,1)169 pts_value(j,2:15) = pts_value(j,2:15) / pts_value(j,1) 170 170 IF ( pts_value(j,12) > 0.0 .AND. pts_value(j,12) < 1.0 ) THEN 171 171 pts_value(j,13) = pts_value(j,13) / pts_value(j,12) … … 186 186 DO n = 1, number_of_particles 187 187 188 pts_value_l(0,1 7) = pts_value_l(0,17) + ( particles(n)%x - &188 pts_value_l(0,18) = pts_value_l(0,18) + ( particles(n)%x - & 189 189 particles(n)%origin_x - pts_value(0,2) )**2 ! x*2 190 pts_value_l(0,1 8) = pts_value_l(0,18) + ( particles(n)%y - &190 pts_value_l(0,19) = pts_value_l(0,19) + ( particles(n)%y - & 191 191 particles(n)%origin_y - pts_value(0,3) )**2 ! y*2 192 pts_value_l(0, 19) = pts_value_l(0,19) + ( particles(n)%z - &192 pts_value_l(0,20) = pts_value_l(0,20) + ( particles(n)%z - & 193 193 particles(n)%origin_z - pts_value(0,4) )**2 ! z*2 194 pts_value_l(0,2 0) = pts_value_l(0,20) + ( particles(n)%speed_x - &194 pts_value_l(0,21) = pts_value_l(0,21) + ( particles(n)%speed_x - & 195 195 pts_value(0,6) )**2 ! u*2 196 pts_value_l(0,2 1) = pts_value_l(0,21) + ( particles(n)%speed_y - &196 pts_value_l(0,22) = pts_value_l(0,22) + ( particles(n)%speed_y - & 197 197 pts_value(0,7) )**2 ! v*2 198 pts_value_l(0,2 2) = pts_value_l(0,22) + ( particles(n)%speed_z - &198 pts_value_l(0,23) = pts_value_l(0,23) + ( particles(n)%speed_z - & 199 199 pts_value(0,8) )**2 ! w*2 200 pts_value_l(0,2 3) = pts_value_l(0,23) + ( particles(n)%speed_x_sgs- &200 pts_value_l(0,24) = pts_value_l(0,24) + ( particles(n)%rvar1 - & 201 201 pts_value(0,9) )**2 ! u"2 202 pts_value_l(0,2 4) = pts_value_l(0,24) + ( particles(n)%speed_y_sgs- &202 pts_value_l(0,25) = pts_value_l(0,25) + ( particles(n)%rvar2 - & 203 203 pts_value(0,10) )**2 ! v"2 204 pts_value_l(0,2 5) = pts_value_l(0,25) + ( particles(n)%speed_z_sgs- &204 pts_value_l(0,26) = pts_value_l(0,26) + ( particles(n)%rvar3 - & 205 205 pts_value(0,11) )**2 ! w"2 206 206 ! … … 209 209 j = particles(n)%group 210 210 211 pts_value_l(j,1 7) = pts_value_l(j,17) + ( particles(n)%x - &211 pts_value_l(j,18) = pts_value_l(j,18) + ( particles(n)%x - & 212 212 particles(n)%origin_x - pts_value(j,2) )**2 213 pts_value_l(j,1 8) = pts_value_l(j,18) + ( particles(n)%y - &213 pts_value_l(j,19) = pts_value_l(j,19) + ( particles(n)%y - & 214 214 particles(n)%origin_y - pts_value(j,3) )**2 215 pts_value_l(j, 19) = pts_value_l(j,19) + ( particles(n)%z - &215 pts_value_l(j,20) = pts_value_l(j,20) + ( particles(n)%z - & 216 216 particles(n)%origin_z - pts_value(j,4) )**2 217 pts_value_l(j,2 0) = pts_value_l(j,20) + ( particles(n)%speed_x - &217 pts_value_l(j,21) = pts_value_l(j,21) + ( particles(n)%speed_x - & 218 218 pts_value(j,6) )**2 219 pts_value_l(j,2 1) = pts_value_l(j,21) + ( particles(n)%speed_y - &219 pts_value_l(j,22) = pts_value_l(j,22) + ( particles(n)%speed_y - & 220 220 pts_value(j,7) )**2 221 pts_value_l(j,2 2) = pts_value_l(j,22) + ( particles(n)%speed_z - &221 pts_value_l(j,23) = pts_value_l(j,23) + ( particles(n)%speed_z - & 222 222 pts_value(j,8) )**2 223 pts_value_l(j,2 3) = pts_value_l(j,23) + ( particles(n)%speed_x_sgs -&223 pts_value_l(j,24) = pts_value_l(j,24) + ( particles(n)%rvar1 - & 224 224 pts_value(j,9) )**2 225 pts_value_l(j,2 4) = pts_value_l(j,24) + ( particles(n)%speed_y_sgs -&225 pts_value_l(j,25) = pts_value_l(j,25) + ( particles(n)%rvar2 - & 226 226 pts_value(j,10) )**2 227 pts_value_l(j,2 5) = pts_value_l(j,25) + ( particles(n)%speed_z_sgs -&227 pts_value_l(j,26) = pts_value_l(j,26) + ( particles(n)%rvar3 - & 228 228 pts_value(j,11) )**2 229 229 ENDIF … … 231 231 ENDDO 232 232 233 pts_value_l(0,2 6) = ( number_of_particles - pts_value(0,1) / numprocs )**2233 pts_value_l(0,27) = ( number_of_particles - pts_value(0,1) / numprocs )**2 234 234 ! variance of particle numbers 235 235 IF ( number_of_particle_groups > 1 ) THEN 236 236 DO j = 1, number_of_particle_groups 237 pts_value_l(j,2 6) = ( pts_value_l(j,1) - &237 pts_value_l(j,27) = ( pts_value_l(j,1) - & 238 238 pts_value(j,1) / numprocs )**2 239 239 ENDDO … … 246 246 247 247 IF ( collective_wait ) CALL MPI_BARRIER( comm2d, ierr ) 248 CALL MPI_ALLREDUCE( pts_value_l(0,1 7), pts_value(0,17), inum*10, MPI_REAL, &248 CALL MPI_ALLREDUCE( pts_value_l(0,18), pts_value(0,18), inum*10, MPI_REAL, & 249 249 MPI_SUM, comm2d, ierr ) 250 250 #else 251 pts_value(:,1 7:26) = pts_value_l(:,17:26)251 pts_value(:,18:27) = pts_value_l(:,18:27) 252 252 #endif 253 253 … … 264 264 265 265 IF ( pts_value(j,1) > 0.0 ) THEN 266 pts_value(j,1 7:25) = pts_value(j,17:25) / pts_value(j,1)267 ENDIF 268 pts_value(j,2 6) = pts_value(j,26) / numprocs266 pts_value(j,18:26) = pts_value(j,18:26) / pts_value(j,1) 267 ENDIF 268 pts_value(j,27) = pts_value(j,27) / numprocs 269 269 270 270 ENDDO -
palm/trunk/SOURCE/header.f90
r768 r824 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! 6 ! Output of cloud physics parameters/quantities complemented and restructured 7 7 ! 8 8 ! Former revisions: … … 338 338 ELSE 339 339 WRITE ( io, 130 ) 340 WRITE ( io, 131 )341 IF ( radiation ) WRITE ( io, 132 )342 IF ( precipitation ) WRITE ( io, 133 )343 340 ENDIF 344 341 ENDIF … … 1470 1467 1471 1468 ! 1469 !-- Cloud physcis parameters / quantities / numerical methods 1470 WRITE ( io, 430 ) 1471 IF ( humidity .AND. .NOT. cloud_physics .AND. .NOT. cloud_droplets) THEN 1472 WRITE ( io, 431 ) 1473 ELSEIF ( humidity .AND. cloud_physics ) THEN 1474 WRITE ( io, 432 ) 1475 IF ( radiation ) WRITE ( io, 132 ) 1476 IF ( precipitation ) WRITE ( io, 133 ) 1477 ELSEIF ( humidity .AND. cloud_droplets ) THEN 1478 WRITE ( io, 433 ) 1479 IF ( curvature_solution_effects ) WRITE ( io, 434 ) 1480 ENDIF 1481 1482 ! 1472 1483 !-- LES / turbulence parameters 1473 1484 WRITE ( io, 450 ) … … 1521 1532 IF ( particles_per_point > 1 ) WRITE ( io, 489 ) particles_per_point 1522 1533 WRITE ( io, 495 ) total_number_of_particles 1523 IF ( maximum_number_of_tailpoints /= 0 ) THEN1534 IF ( use_particle_tails .AND. maximum_number_of_tailpoints /= 0 ) THEN 1524 1535 WRITE ( io, 483 ) maximum_number_of_tailpoints 1525 1536 IF ( minimum_tailpoint_distance /= 0 ) THEN … … 1647 1658 129 FORMAT (' --> Additional prognostic equation for the specific humidity') 1648 1659 130 FORMAT (' --> Additional prognostic equation for the total water content') 1649 131 FORMAT (' --> Parameterization of condensation processes via (0%-or100%)') 1650 132 FORMAT (' --> Parameterization of long-wave radiation processes via'/ & 1660 132 FORMAT (' Parameterization of long-wave radiation processes via'/ & 1651 1661 ' effective emissivity scheme') 1652 133 FORMAT (' -->Precipitation parameterization via Kessler-Scheme')1662 133 FORMAT (' Precipitation parameterization via Kessler-Scheme') 1653 1663 134 FORMAT (' --> Additional prognostic equation for a passive scalar') 1654 1664 135 FORMAT (' --> Solve perturbation pressure via multigrid method (', & … … 1934 1944 427 FORMAT (/' Initial wind profiles (u,v) are interpolated from given'// & 1935 1945 ' profiles') 1946 430 FORMAT (//' Cloud physics quantities / methods:'/ & 1947 ' ----------------------------------'/) 1948 431 FORMAT (' Humidity is treated as purely passive scalar (no condensati', & 1949 'on)') 1950 432 FORMAT (' Bulk scheme with liquid water potential temperature and'/ & 1951 ' total water content is used.'/ & 1952 ' Condensation is parameterized via 0% - or 100% scheme.') 1953 433 FORMAT (' Cloud droplets treated explicitly using the Lagrangian part', & 1954 'icle model') 1955 434 FORMAT (' Curvature and solution effecs are considered for growth of', & 1956 ' droplets < 1.0E-6 m') 1936 1957 450 FORMAT (//' LES / Turbulence quantities:'/ & 1937 1958 ' ---------------------------'/) 1938 451 FORMAT (' Diffusion coefficients are constant:'/ &1939 ' Km = ',F6.2,' m**2/s Kh = ',F6.2,' m**2/s Pr = ',F5.2)1940 452 FORMAT (' Mixing length is limited to the Prandtl mixing lenth.')1941 453 FORMAT (' Mixing length is limited to ',F4.2,' * z')1942 454 FORMAT (' TKE is not allowed to fall below ',E9.2,' (m/s)**2')1943 455 FORMAT (' initial TKE is prescribed as ',E9.2,' (m/s)**2')1959 451 FORMAT (' Diffusion coefficients are constant:'/ & 1960 ' Km = ',F6.2,' m**2/s Kh = ',F6.2,' m**2/s Pr = ',F5.2) 1961 452 FORMAT (' Mixing length is limited to the Prandtl mixing lenth.') 1962 453 FORMAT (' Mixing length is limited to ',F4.2,' * z') 1963 454 FORMAT (' TKE is not allowed to fall below ',E9.2,' (m/s)**2') 1964 455 FORMAT (' initial TKE is prescribed as ',E9.2,' (m/s)**2') 1944 1965 470 FORMAT (//' Actions during the simulation:'/ & 1945 1966 ' -----------------------------'/) -
palm/trunk/SOURCE/init_cloud_physics.f90
r484 r824 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! 6 ! calculation of b_cond replaced by calculation of bfactor 7 7 ! 8 8 ! Former revisions: … … 34 34 USE arrays_3d 35 35 USE cloud_parameters 36 USE constants 36 37 USE control_parameters 37 38 USE grid_variables … … 46 47 47 48 ! 48 !-- C ompute frequently used parameters49 !-- Calculate frequently used parameters 49 50 l_d_cp = l_v / cp 50 51 l_d_r = l_v / r_d 51 52 l_d_rv = l_v / r_v 52 53 53 ! 54 !-- Constant b in equation for droplet growth by condensation / evaporation. 55 !-- Factor 1E-3 is needed because formula is in cgs units 56 mass_of_solute = 1.0E-17 ! in kg 57 molecular_weight_of_solute = 58.5 ! NaCl 58 b_cond = 4.3 * 2.0 * mass_of_solute / molecular_weight_of_solute * 1.0E-6 59 54 !-- Calculate factor used in equation for droplet growth by condensation 55 bfactor = 3.0 * vanthoff * mass_of_solute * molecular_weight_of_water & 56 / ( 4.0 * pi * rho_l * molecular_weight_of_solute ) 60 57 ! 61 58 !-- Calculate: -
palm/trunk/SOURCE/init_particles.f90
r792 r824 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! array particles implemented as pointer 6 ! particle attributes speed_x|y|z_sgs renamed rvar1|2|3. 7 ! array particles implemented as pointer. 7 8 ! 8 9 ! Former revisions: … … 63 64 64 65 USE arrays_3d 66 USE cloud_parameters 65 67 USE control_parameters 66 68 USE dvrp_variables … … 316 318 particles(n)%dvrp_psize = dvrp_psize 317 319 particles(n)%e_m = 0.0 320 IF ( curvature_solution_effects ) THEN 321 ! 322 !-- Initial values (internal timesteps, derivative) 323 !-- for Rosenbrock method 324 particles(n)%rvar1 = 1.0E-12 325 particles(n)%rvar2 = 1.0E-3 326 particles(n)%rvar3 = -9999999.9 327 ELSE 328 ! 329 !-- Initial values for SGS velocities 330 particles(n)%rvar1 = 0.0 331 particles(n)%rvar2 = 0.0 332 particles(n)%rvar3 = 0.0 333 ENDIF 318 334 particles(n)%speed_x = 0.0 319 particles(n)%speed_x_sgs = 0.0320 335 particles(n)%speed_y = 0.0 321 particles(n)%speed_y_sgs = 0.0322 336 particles(n)%speed_z = 0.0 323 particles(n)%speed_z_sgs = 0.0324 337 particles(n)%origin_x = pos_x 325 338 particles(n)%origin_y = pos_y -
palm/trunk/SOURCE/modules.f90
r810 r824 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! 6 ! +bfactor, curvature_solution_effects, eps_ros, molecular_weight_of_water, 7 ! vanthoff, -b_cond in cloud_parameters, 8 ! dopts_num increased to 27, particle attributes speed_x|y|z_sgs renamed 9 ! rvar1|2|3 7 10 ! 8 11 ! Former revisions: … … 332 335 REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: rif_wall 333 336 334 REAL, DIMENSION(:,:,:), ALLOCATABLE :: var_x, var_y, var_z, gamma_x, 337 REAL, DIMENSION(:,:,:), ALLOCATABLE :: var_x, var_y, var_z, gamma_x, & 335 338 gamma_y, gamma_z 336 339 … … 369 372 !------------------------------------------------------------------------------! 370 373 371 REAL :: b_cond, cp = 1005.0, diff_coeff_l = 0.23E-4, & 372 effective_coll_efficiency, l_d_cp, l_d_r, l_d_rv, l_v = 2.5E+06, & 373 mass_of_solute, molecular_weight_of_solute, & 374 LOGICAL :: curvature_solution_effects = .FALSE. 375 376 REAL :: bfactor, cp = 1005.0, diff_coeff_l = 0.23E-4, & 377 effective_coll_efficiency, & 378 eps_ros = 1.0E-4, & ! accuracy of Rosenbrock method 379 l_d_cp, l_d_r, l_d_rv, l_v = 2.5E+06, & 380 mass_of_solute = 1.0E-17, & ! soluted NaCl in kg 381 molecular_weight_of_solute = 0.05844, & ! mol. mass NaCl (kg/mol) 382 molecular_weight_of_water = 0.01801528,& ! mol. mass H2O (kg/mol) 374 383 prec_time_const = 0.001, ql_crit = 0.0005, rho_l = 1.0E3, & 375 r_d = 287.0, r_v = 461.51, thermal_conductivity_l = 2.43E-2 384 r_d = 287.0, r_v = 461.51, thermal_conductivity_l = 2.43E-2, & 385 vanthoff = 2.0 ! van't Hoff factor (NaCl) 376 386 377 387 REAL, DIMENSION(:), ALLOCATABLE :: pt_d_t, t_d_pt … … 1037 1047 #endif 1038 1048 1039 INTEGER, PARAMETER :: dopr_norm_num = 7, dopts_num = 2 6, dots_max = 1001049 INTEGER, PARAMETER :: dopr_norm_num = 7, dopts_num = 27, dots_max = 100 1040 1050 1041 1051 INTEGER :: dots_num = 23 … … 1052 1062 (/ 'tnpt ', 'x_ ', 'y_ ', 'z_ ', 'z_abs ', 'u ', & 1053 1063 'v ', 'w ', 'u" ', 'v" ', 'w" ', 'npt_up ', & 1054 'w_up ', 'w_down ', ' npt_max', 'npt_min', 'x*2 ', 'y*2 ', &1055 ' z*2 ', 'u*2 ', 'v*2 ', 'w*2 ', 'u"2 ', 'v"2 ', &1056 ' w"2 ', 'npt*2 ' /)1064 'w_up ', 'w_down ', 'radius ', 'npt_max', 'npt_min', 'x*2 ', & 1065 'y*2 ', 'z*2 ', 'u*2 ', 'v*2 ', 'w*2 ', 'u"2 ', & 1066 'v"2 ', 'w"2 ', 'npt*2 ' /) 1057 1067 1058 1068 CHARACTER (LEN=7), DIMENSION(dopts_num) :: dopts_unit = & 1059 1069 (/ 'number ', 'm ', 'm ', 'm ', 'm ', 'm/s ', & 1060 1070 'm/s ', 'm/s ', 'm/s ', 'm/s ', 'm/s ', 'number ', & 1061 'm/s ', 'm/s ', ' number ', 'number ', 'm2', 'm2 ', &1062 'm2 ', 'm2 /s2', 'm2/s2 ', 'm2/s2 ', 'm2/s2 ', 'm2/s2 ', &1063 'm2/s2 ', ' number2' /)1071 'm/s ', 'm/s ', 'm ', 'number ', 'number ', 'm2 ', & 1072 'm2 ', 'm2 ', 'm2/s2 ', 'm2/s2 ', 'm2/s2 ', 'm2/s2 ', & 1073 'm2/s2 ', 'm2/s2 ', 'number2' /) 1064 1074 1065 1075 CHARACTER (LEN=7), DIMENSION(dots_max) :: dots_label = & … … 1230 1240 SEQUENCE 1231 1241 REAL :: age, age_m, dt_sum, dvrp_psize, e_m, origin_x, origin_y, & 1232 origin_z, radius, speed_x, speed_x_sgs, speed_y,&1233 speed_ y_sgs, speed_z, speed_z_sgs, weight_factor, x, y, z1242 origin_z, radius, rvar1, rvar2, rvar3, speed_x, speed_y, & 1243 speed_z, weight_factor, x, y, z 1234 1244 INTEGER :: color, group, tailpoints, tail_id 1235 1245 END TYPE particle_type -
palm/trunk/SOURCE/parin.f90
r810 r824 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! 6 ! +curvature_solution_effects in inipar 7 7 ! 8 8 ! Former revisions: … … 122 122 USE arrays_3d 123 123 USE averaging 124 USE cloud_parameters 124 125 USE control_parameters 125 126 USE dvrp_variables … … 145 146 canyon_wall_south, cfl_factor, cloud_droplets, cloud_physics, & 146 147 collective_wait, conserve_volume_flow, conserve_volume_flow_mode, & 147 coupling_start_time, cthf, cut_spline_overshoot, & 148 coupling_start_time, cthf, curvature_solution_effects, & 149 cut_spline_overshoot, & 148 150 cycle_mg, damp_level_1d, dissipation_1d, & !dissipation_control, & 149 151 dp_external, dp_level_b, dp_smooth, dpdxy, drag_coefficient, & -
palm/trunk/SOURCE/particle_boundary_conds.f90
r484 r824 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! 6 ! particle attributes speed_x|y|z_sgs renamed rvar1|2|3. 7 7 ! 8 8 ! Former revisions: … … 549 549 550 550 IF ( use_sgs_for_particles ) THEN 551 particles(n)% speed_z_sgs = - particles(n)%speed_z_sgs551 particles(n)%rvar3 = - particles(n)%rvar3 552 552 ENDIF 553 553 reflect_z = .FALSE. … … 559 559 560 560 IF ( use_sgs_for_particles ) THEN 561 particles(n)% speed_y_sgs = - particles(n)%speed_y_sgs561 particles(n)%rvar2 = - particles(n)%rvar2 562 562 ENDIF 563 563 reflect_y = .FALSE. … … 569 569 570 570 IF ( use_sgs_for_particles ) THEN 571 particles(n)% speed_x_sgs = - particles(n)%speed_x_sgs571 particles(n)%rvar1 = - particles(n)%rvar1 572 572 ENDIF 573 573 reflect_x = .FALSE. -
palm/trunk/SOURCE/read_var_list.f90
r627 r824 4 4 ! Current revisions: 5 5 ! ------------------ 6 ! 6 ! +curvature_solution_effects 7 7 ! 8 8 ! Former revisions: … … 99 99 USE arrays_3d 100 100 USE averaging 101 USE cloud_parameters 101 102 USE control_parameters 102 103 USE grid_variables … … 293 294 CASE ( 'current_timestep_number' ) 294 295 READ ( 13 ) current_timestep_number 296 CASE ( 'curvature_solution_effects' ) 297 READ ( 13 ) curvature_solution_effects 295 298 CASE ( 'cut_spline_overshoot' ) 296 299 READ ( 13 ) cut_spline_overshoot -
palm/trunk/SOURCE/write_var_list.f90
r623 r824 4 4 ! Current revisions: 5 5 ! ----------------- 6 ! 6 ! +curvature_solution_effects 7 7 ! 8 8 ! Former revisions: … … 89 89 USE arrays_3d 90 90 USE averaging 91 USE cloud_parameters 91 92 USE control_parameters 92 93 USE grid_variables … … 213 214 WRITE ( 14 ) 'current_timestep_number ' 214 215 WRITE ( 14 ) current_timestep_number 216 WRITE ( 14 ) 'curvature_solution_effects ' 217 WRITE ( 14 ) curvature_solution_effects 215 218 WRITE ( 14 ) 'cthf ' 216 219 WRITE ( 14 ) cthf
Note: See TracChangeset
for help on using the changeset viewer.