Skip to content

Commit 555c941

Browse files
authored
Add the dielectric heating term
* Add the dielectric heating term The implementation add the RaT number which quantifies the heat added to the system according to the existing Rayleigh number. * Add the dielectric heating term The implementation add the RaT number which quantifies the heat added to the system according to the existing Rayleigh number.
1 parent 46b97cb commit 555c941

6 files changed

Lines changed: 29 additions & 11 deletions

File tree

src/Namelists.f90

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ subroutine readNamelists(tscheme)
7777
& mpi_transp,l_adv_curl,mpi_packing
7878

7979
namelist/phys_param/ &
80-
& ra,rae,raxi,pr,sc,prmag,ek,gamma,epsc0,epscxi0,radratio,Bn, &
80+
& ra,rae,rat,raxi,pr,sc,prmag,ek,gamma,epsc0,epscxi0,radratio,Bn, &
8181
& ktops,kbots,ktopv,kbotv,ktopb,kbotb,kbotxi,ktopxi, &
8282
& s_top,s_bot,impS,sCMB,xi_top,xi_bot,impXi,xiCMB, &
8383
& nVarCond,con_DecRate,con_RadRatio,con_LambdaMatch, &
@@ -322,7 +322,9 @@ subroutine readNamelists(tscheme)
322322
l_AB1 =.false.
323323
l_bridge_step=.true.
324324
l_onset =.false.
325-
l_ehd_dep=.true.
325+
l_ehd_dep=.false.
326+
l_ehd_die=.false.
327+
326328

327329
if ( mode == 1 ) then
328330
!-- Only convection:
@@ -429,6 +431,13 @@ subroutine readNamelists(tscheme)
429431

430432
if ( ra == 0.0_cp .and. rae == 0.0_cp ) l_heat=.false.
431433

434+
if ( rae > 0.0_cp ) then
435+
l_ehd_dep = .true.
436+
if ( rat > 0.0_cp ) then
437+
l_ehd_die = .true.
438+
end if
439+
end if
440+
432441
if ( ek < 0.0_cp ) l_non_rot= .true.
433442
if ( l_non_rot ) then
434443
l_corr=.false.
@@ -929,6 +938,7 @@ subroutine writeNamelists(n_out)
929938
write(n_out,*) "&phys_param"
930939
write(n_out,'('' ra ='',ES14.6,'','')') ra
931940
write(n_out,'('' rae ='',ES14.6,'','')') rae
941+
write(n_out,'('' rat ='',ES14.6,'','')') rat
932942
write(n_out,'('' raxi ='',ES14.6,'','')') raxi
933943
write(n_out,'('' pr ='',ES14.6,'','')') pr
934944
write(n_out,'('' sc ='',ES14.6,'','')') sc
@@ -1373,6 +1383,8 @@ subroutine defaultNamelists
13731383

13741384
!----- Namelist phys_param:
13751385
ra =0.0_cp
1386+
rae =0.0_cp
1387+
rat =0.0_cp
13761388
raxi =0.0_cp
13771389
ek =1.0e-3_cp
13781390
pr =one

src/get_nl.f90

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ module grid_space_arrays_mod
2323
use radial_functions, only: or2, orho1, beta, otemp1, visc, r, or3, &
2424
& lambda, or4, or1
2525
use physical_parameters, only: radratio, LFfac, n_r_LCR, prec_angle, ViscHeatFac, &
26-
& oek, po, dilution_fac, ra, rae, gamma, opr, OhmLossFac, &
26+
& oek, po, dilution_fac, ra, rae, rat, gamma, opr, OhmLossFac, &
2727
& epsPhase, phaseDiffFac, penaltyFac, tmelt
2828
use horizontal_data, only: sinTheta, cosTheta, phi, O_sin_theta_E2, &
2929
& cosn_theta_E2, O_sin_theta
3030
use parallel_mod, only: get_openmp_blocks
3131
use constants, only: two, third, one
3232
use logic, only: l_conv_nl, l_heat_nl, l_mag_nl, l_anel, l_mag_LF, l_adv_curl, &
33-
& l_chemical_conv, l_precession, l_centrifuge, l_phase_field, l_ehd_dep
33+
& l_chemical_conv, l_precession, l_centrifuge, l_phase_field, l_ehd_dep, l_ehd_die
3434

3535
implicit none
3636

@@ -456,6 +456,10 @@ subroutine get_nl(this, time, nR, nBc, lRmsCalc)
456456

457457
end if ! Viscous heating and Ohmic losses ?
458458

459+
if ( l_ehd_die ) then
460+
this%heatTerms(:,nPhi)= &
461+
& opr * rae/rat * radratio**2/(1.0D0-radratio)**4 * or4(nR)
462+
end if
459463
end do
460464
!$omp end parallel
461465

src/get_td.f90

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ module nonlinear_lm_mod
1111
use truncation, only: lm_max, lm_maxMag, m_min
1212
use logic, only : l_anel, l_conv_nl, l_corr, l_heat, l_anelastic_liquid, &
1313
& l_mag_nl, l_mag_kin, l_mag_LF, l_conv, l_mag, &
14-
& l_chemical_conv, l_single_matrix, l_double_curl
14+
& l_chemical_conv, l_single_matrix, l_double_curl, l_ehd_die
1515
use radial_functions, only: r, or2, or1, beta, epscProf, or4, temp0, orho1, l_R
1616
use physical_parameters, only: CorFac, epsc, n_r_LCR, epscXi
1717
use blocking, only: lm2l, lm2lmA, lm2lmS
@@ -60,7 +60,7 @@ subroutine initialize(this,lmP_max)
6060
allocate( this%VxBrLM(lmP_max), this%VxBtLM(lmP_max), this%VxBpLM(lmP_max))
6161
bytes_allocated = bytes_allocated + 6*lmP_max*SIZEOF_DEF_COMPLEX
6262

63-
if ( l_anel) then
63+
if ( l_anel .or. l_ehd_die ) then
6464
allocate( this%heatTermsLM(lmP_max) )
6565
bytes_allocated = bytes_allocated+lmP_max*SIZEOF_DEF_COMPLEX
6666
end if
@@ -120,7 +120,7 @@ subroutine set_zero(this)
120120
this%VStLM(lm)=zero
121121
this%VSpLM(lm)=zero
122122
end if
123-
if ( l_anel ) this%heatTermsLM(lm)=zero
123+
if ( l_anel .or. l_ehd_die ) this%heatTermsLM(lm)=zero
124124
if ( l_chemical_conv ) then
125125
this%VXitLM(lm)=zero
126126
this%VXipLM(lm)=zero
@@ -478,15 +478,15 @@ subroutine get_dsdt(this, nR, nBc, dsdt, dVSrLM)
478478
if ( nBc == 0 ) then
479479

480480
dsdt(1)=epsc*epscProf(nR)!+opr/epsS*divKtemp0(nR)
481-
if ( l_anel ) then
481+
if ( l_anel .or. l_ehd_die ) then
482482
if ( l_anelastic_liquid ) then
483483
dsdt(1)=dsdt(1)+temp0(nR)*this%heatTermsLM(1)
484484
else
485485
dsdt(1)=dsdt(1)+this%heatTermsLM(1)
486486
end if
487487
end if
488488

489-
if ( l_anel ) then
489+
if ( l_anel .or. l_ehd_die ) then
490490
if ( l_anelastic_liquid ) then
491491
!$omp parallel do
492492
do lm=lm_min,lm_max

src/logic.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ module logic
7373
logical :: l_LCR ! Switch for zero electrical conductivity beyond r_LCR
7474
logical :: lVerbose ! Switch for detailed information about run progress
7575
logical :: l_ehd_dep ! Switch for dilectrophoretic force
76+
logical :: l_ehd_die ! Switch for dielectric heating
7677

7778
logical :: l_PressGraph ! Store pressure in graphic files
7879

src/phys_param.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ module physical_parameters
3838
real(cp) :: radratio ! aspect ratio
3939
real(cp) :: ra ! Rayleigh number
4040
real(cp) :: rae ! Electric Rayleigh number
41+
real(cp) :: rat ! Thermal heating from dielectric heat
4142
real(cp) :: raxi ! Chemical composition-based Rayleigh number
4243
real(cp) :: sc ! Schmidt number (i.e. chemical Prandtl number)
4344
real(cp) :: ek ! Ekman number

src/rIter.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ module rIter_mod
2121
& l_precession, l_centrifuge, l_adv_curl, &
2222
& l_double_curl, l_parallel_solve, l_single_matrix,&
2323
& l_temperature_diff, l_RMS, l_phase_field, &
24-
& l_onset, l_DTrMagSpec, l_ehd_dep
24+
& l_onset, l_DTrMagSpec, l_ehd_dep, l_ehd_die
2525
use radial_data, only: n_r_cmb, n_r_icb, nRstart, nRstop, nRstartMag, &
2626
& nRstopMag
2727
use radial_functions, only: or2, orho1, l_R
@@ -683,7 +683,7 @@ subroutine transform_to_lm_space(this, nR, lRmsCalc, dVSrLM, dVXirLM, dphidt)
683683
call spat_to_qst(this%gsa%VSr, this%gsa%VSt, this%gsa%VSp, &
684684
& dVSrLM, this%nl_lm%VStLM, this%nl_lm%VSpLM, l_R(nR))
685685

686-
if ( l_anel ) call scal_to_SH(this%gsa%heatTerms, this%nl_lm%heatTermsLM, &
686+
if ( l_anel .or. l_ehd_die ) call scal_to_SH(this%gsa%heatTerms, this%nl_lm%heatTermsLM, &
687687
& l_R(nR))
688688
end if
689689
if ( l_chemical_conv ) then

0 commit comments

Comments
 (0)