! ! License-Identifier: GPL ! ! Copyright (C) 2006 The Yambo Team ! ! Authors (see AUTHORS file for details): AM DS ! subroutine INIT_activate() ! use BS_solvers, ONLY:BSS_mode use QP_m, ONLY:QP_solver,COHSEX_use_empties use stderr, ONLY:STRING_match use global_XC, ONLY:WF_exx_fraction,WF_exx_screening use drivers, ONLY:l_em1s,l_acfdt,l_HF_and_locXC,l_col_cut,l_alda_fxc,l_bs_fxc,l_optics,l_bse,l_bss,& & l_chi,l_cohsex,l_life,l_rpa_IP,l_td_hf,l_setup,l_sc_run,l_rim,l_rim_w,& & l_real_time,l_ppa,l_mpa,l_lrc_fxc,l_gw0,l_elel_corr,l_elel_scatt,l_elph_corr,l_td_sex,& & l_elph_Hamiltonian,l_elph_scatt,l_elphoton_corr,l_elphoton_scatt,l_em1d,l_eval_collisions,& & l_sc_magnetic,l_sc_electric,l_dipoles,l_pf_fxc,l_nl_optics,l_phel_corr,l_nl_p_and_p, & & l_EXCPH_gkkp,l_EXCPH_optics,l_EXCPH_lifetime,l_X,l_fl_optics #if defined _SC || defined _RT use hamiltonian, ONLY:H_potential #endif #if defined _SC use magnetic, ONLY:MAG_landau #endif #if defined _RT use fields, ONLY:n_ext_fields #endif #if defined _ELPH use ELPH, ONLY:elph_use_q_grid #endif #if defined _SCALAPACK use drivers, ONLY:l_slk_test #endif use drivers, ONLY:l_gpu_test ! implicit none ! #if defined _RT integer :: i1 #endif character(2) :: X_kind ! !Common ! call initactivate(1,'StdoHash Nelectro NelCond ElecTemp BoseTemp OccTresh NLogCPUs DBsIOoff DBsFRAGpm EvalMagn MEM_tresh DegFix') ! !FFT ! if (any((/l_optics.and.l_chi,l_optics.and.l_bse,l_em1d,l_X,& & l_em1s,l_acfdt,l_HF_and_locXC,l_col_cut/))) call initactivate(1,'FFTGvecs WFbuffIO') ! ! CPU structure ! if (l_dipoles.or.l_elphoton_corr) then call CPU_activate("DIP") call initactivate(1,'DIP_Threads') endif ! ! CPU structure ! if((l_optics.and..not.l_bse).or.l_em1s.or.l_em1d.or.l_ppa.or.l_mpa.or.l_life.or.l_X) then if (l_em1s.or.l_em1d.or.l_ppa.or.l_mpa.or.l_life.or.l_X) then call CPU_activate("X_and_IO") else call CPU_activate("X") endif call initactivate(1,'X_Threads') if (l_elel_corr.or.l_elphoton_corr) then call CPU_activate("DIP") call initactivate(1,'X_Threads DIP_Threads') endif endif ! if(l_sc_run) then call CPU_activate("X_and_IO") ! Required for finite E-field, l_sc_exx, SC_up_W_iter endif ! if ( l_HF_and_locXC .and. .not.(l_sc_run.or.l_eval_collisions.or.l_phel_corr) ) then call CPU_activate("SX") call initactivate(1,'SX_Threads') endif if ( (l_gw0.or.l_cohsex.or.l_life) .and. .not.(l_sc_run.or.l_eval_collisions.or.l_phel_corr) ) then call CPU_activate("SE") call initactivate(1,'SE_Threads') endif ! #if defined _SCALAPACK if (l_slk_test) then call initactivate(1,"SLKdim") call CPU_activate("SLK") endif #endif ! if (l_gpu_test) then call initactivate(1,"GPUdim") !call CPU_activate("SLK") endif ! #if defined _PAR_IO call CPU_activate("BZINDX") #endif ! #if defined _SC if (l_eval_collisions .or. l_sc_run) then call CPU_activate("SE") call initactivate(1,'SE_Threads') endif #endif ! #if defined _RT if (l_eval_collisions .or. l_real_time) then call CPU_activate("RT") call initactivate(1,'RT_Threads') endif #endif ! #if defined _NL if (l_nl_optics .or. l_fl_optics) then call CPU_activate("NL") call CPU_activate("DIP") call CPU_activate("OSCLL") call initactivate(1,'DIP_Threads NL_Threads OSCLL_Threads') endif #endif ! #if defined _FL if (l_fl_optics) then call CPU_activate("FL") call initactivate(1,'DIP_Threads NL_Threads') endif #endif ! if (l_bse) then call CPU_activate("BS") call CPU_activate("DIP") call initactivate(1,'X_Threads DIP_Threads K_Threads') endif ! #if defined _ELPH if ((l_life.or.l_gw0).and.l_phel_corr) then call CPU_activate("PH_SE") endif #endif ! !Setup ! if (l_setup) call initactivate(1,'MaxGvecs Gthresh K_grids IkSigLim IkXLim NoDiagSC EvalMagn') #if defined _ELPH if (l_setup) call initactivate(1,'BSEscatt') #endif ! ! if (any((/(l_optics.and.l_chi),(l_optics.and.l_bse)/))) call initactivate(1,'NonPDirs MolPos') ! !RIM ! if (l_rim) call initactivate(1,'RandQpts RandGvec QpgFull Em1Anys IDEm1Ref') ! !RIM_W ! if (l_rim_w) call initactivate(1,'RandQpts RandGvecW rimw_type') ! !Col CUTOFF ! if (l_col_cut) call initactivate(1,'CUTGeo CUTBox CUTRadius CUTwsGvec CUTCol_test EpsEnv') ! !XX ! if (l_HF_and_locXC) call initactivate(1,'EXXRLvcs VXCRLvcs UseNLCC') ! ! Kernels ! if (l_em1s.or.l_em1d.or.l_X.or.l_mpa) call initactivate(1,'Chimod ChiLinAlgMod') if (l_optics.and.l_chi) call initactivate(1,'Chimod ChiLinAlgMod') if (l_optics.and.l_bse) call initactivate(1,'BSKmod BSEmod Lkind BSKIOshape BSEdiskIO') if (l_optics.and.l_bse.and.l_bss) call initactivate(1,'BSSmod') ! if (l_dipoles) then call initactivate(1,'DipQpt DipBands DipBandsALL') call initactivate(1,'DipBandsALL DipApproach DipComputed DipPDirect ShiftedPaths DipoleEtresh') #if defined _NL || defined _SC call initactivate(1,'EvPolarization') #endif endif ! if (l_optics.and.l_chi) then ! ! BS based TDDFT (BS fxc is only of q=0 0 0). BS_fxc db exist if(l_bs_fxc) call initactivate(1,'FxcGRLc FxcSVdig FxcRetarded') ! ! ALDA/LRC Tddft if (l_alda_fxc) call initactivate(1,'FxcGRLc FxcLibxc FxcMode UseNLCC') if (l_lrc_fxc) call initactivate(1,'LRC_alpha LRC_beta') if (l_pf_fxc) call initactivate(1,'PF_alpha') ! endif ! ! Optics(not bse) or GW (no PP) ! if ((l_optics.and.l_chi).or.(l_em1d.and..not.(l_life.or.l_ppa.or.l_mpa.or.l_gw0)).or.l_X) then ! X_kind ="Xd" if (l_X) X_kind="Xx" ! if (.not.l_rpa_IP) call X_activate(X_kind,(/'NGsBlk'/)) ! call X_activate(X_kind,(/'QpntsR','BndsRn',& & 'GrFnTp','EnRnge','DmRnge','DmERef','CGrdSp','ETStps','EMStps',& & 'DrudeW','EhEngy','LongDr'/)) call initactivate(1,'DrClassic') if (.not.l_rpa_IP) call initactivate(1,'WriteXo') ! call INIT_QP_ctl_switch('X') ! #if defined _RT call INIT_RT_ctl_switch('X') #endif call initactivate(1,'Qdirection QShiftOrder') ! endif ! if (l_optics.or.(l_life.and.l_elel_corr)) then ! ! Double Grid ! call initactivate(1,'DbGdQsize') ! ! Dipoles & Gauges ! call initactivate(1,'DipApproach DipComputed DipPDirect ShiftedPaths Gauge') ! endif ! ! BSK ! if (l_optics.and.l_bse) then ! call initactivate(1,'BSENGexx ALLGexx') call initactivate(1,'Qdirection QShiftOrder') ! if(l_td_hf.or.l_td_sex) call initactivate(1,'BSENGBlk WehCpl') if(l_td_sex) call initactivate(1,'WehDiag') if(l_alda_fxc) then call initactivate(1,'BSENGfxc FxcLibxc FxcMode UseNLCC') if( (WF_exx_fraction>0.) .or. (WF_exx_screening>0.) ) call initactivate(1,'BSENGBlk WehDiag WehCpl') endif ! ! BSE + TDDFT = no BS db, Fxc + LF on-fly ! Special case: The BSE equation is used to build up the BSE_Fxc kernel. if (l_bs_fxc) then call initactivate(1,'FxcGRLc FxcSVdig FxcRetarded FxcMEStps') call initactivate(1,'BLongDir QPropDir BEnRange BDmRange BEnSteps') !call initactivate(1,'EFieldDir QPropDir BEnRange BDmRange BEnSteps') endif ! endif ! ! BSE ! if (l_optics.and.l_bse) then ! call INIT_QP_ctl_switch('K') ! #if defined _RT call INIT_RT_ctl_switch('K') call INIT_RT_ctl_switch('R') #endif ! call initactivate(1,'NoCondSumRule MetDamp') ! #if defined _NL || defined _SC call initactivate(1,'EvPolarization FrSndOrd') #endif ! call initactivate(1,'PL_weights EXCTemp') ! call initactivate(1,'DrudeWBS Reflectivity') call initactivate(1,'BoseCut ShiftedPaths') call initactivate(1,'BSEQptR BSEBands BSEFrozenBands BSKCut BSKIOmode BSEEhEny BSehWind NoDiagSC') ! #if defined _RT call initactivate(1,'RTOccMode ForceEqTrans') #endif ! endif ! ! BSE solver ! if (l_optics.and.l_bse.and.l_bss.or.(l_bse.and.l_rpa_IP)) then ! call initactivate(1,'BEnRange BDmRange BDmERef BEnSteps BLongDir QPropDir') !call initactivate(1,'BEnRange BDmRange BDmERef BEnSteps EFieldDir QPropDir') call initactivate(1,'BSEprop BSEdips') ! ! Special case: the BSE_Fxc kernel has been constructed ! Thus I move to g-space to solve the Dyson equation ! if (index(BSS_mode,'t')/=0 .and. l_bs_fxc) call initactivate(-1,'BSENGexx ALLGexx') if (index(BSS_mode,'t')/=0 .and. l_bs_fxc) call initactivate(-1,'BSENGBlk BSENGfxc') ! if (index(BSS_mode,'i')/=0) call initactivate(1,'BSSInvMode BSEPSInvTrs BSSInvPFratio BSSInvKdiag') if (index(BSS_mode,'d')/=0.or.index(BSS_mode,'s')/=0.or.index(BSS_mode,'o')/=0) call initactivate(1,'WRbsWF BSSPertWidth') if (index(BSS_mode,'d')/=0) call initactivate(1,'BSSldiaLib BSSNEig BSSEnRange BSSFirstEig') if (index(BSS_mode,'h')/=0) call initactivate(1,'BSHayTrs BSHayTer BSHayItrIO BSHayItrMAX') if (index(BSS_mode,'s')/=0) then call initactivate(1,'BSSNEig BSSEnTarget BSSSlepcApproach BSSSlepcPrecondition BSSSlepcExtraction') call initactivate(1,'BSSSlepcMaxIt BSSSlepcNCV BSSSlepcMPD BSSSlepcTol BSSSlepcMatrixFormat') endif ! ! Special project dependent variables ! if (index(BSS_mode,'i')/=0) call initactivate(1,'BSPLInvTrs') #if defined _ELPH if (l_elph_corr.and..not.elph_use_q_grid) call initactivate(1,'ElPhRndNq') #endif endif ! ! Static screen ! if (l_em1s) then call INIT_QP_ctl_switch('X') ! #if defined _RT call INIT_RT_ctl_switch('X') #endif ! call initactivate(1,'ShiftedPaths') call X_activate('Xs',(/'QpntsR','BndsRn','NGsBlk','GrFnTp','DmRnge','CGrdSp','EhEngy','LongDr','DrudeW'/)) call initactivate(1,'XTermKind') call initactivate(1,'XTermEn') call initactivate(1,'OptDipAverage') endif ! ! GW (PPA, MPA, & COHSEX) ! if ( (l_em1d.and.l_ppa) .or. (l_em1d.and.l_mpa) .or. (l_em1s.and.l_cohsex)) then call INIT_QP_ctl_switch('X') call initactivate(1,'RIM_W RIM_W_diag RIM_W_graph') ! #if defined _RT call INIT_RT_ctl_switch('X') #endif ! call initactivate(1,'ShiftedPaths') if (l_ppa) then call X_activate('Xp',(/'QpntsR','BndsRn','NGsBlk','CGrdSp',& & 'EhEngy','LongDr','PPAPnt'/)) endif if (l_mpa) then call X_activate('Xm',(/'QpntsR','BndsRn','NGsBlk','CGrdSp',& & 'EhEngy','LongDr','EnSamp','EnGrid','EnRnge','ImRnge','DmRnge','ETStps','IntSol'/)) call initactivate(1,'mpERdb') endif if (l_cohsex) then call X_activate('Xs',(/'QpntsR','BndsRn','NGsBlk','EhEngy','LongDr'/)) endif call initactivate(1,'XTermKind') call initactivate(1,'XTermEn') call initactivate(1,'OptDipAverage') endif ! ! ACFDT ! if (l_acfdt) then call INIT_QP_ctl_switch('X') ! #if defined _RT call INIT_RT_ctl_switch('X') #endif ! call initactivate(1,'ShiftedPaths') call initactivate(1,'EXXRLvcs VXCRKvcs AC_n_LAM AC_n_FR AC_E_Rng') call X_activate('Xx',(/'QpntsR','BndsRn','NGsBlk','CGrdSp','EhEngy','LongDr'/)) endif ! ! GW/Life ! if (l_gw0.or.l_life) then ! if (l_gw0.and..not.trim(QP_solver)=="g".and.(l_elel_corr.or.l_elph_corr)) call initactivate(1,'QPsymmtrz') ! #if defined _QED if (l_elphoton_corr) then if (l_gw0) then call initactivate(1,'FFTGvecs RandQptsSphe QEDRLvcs GbndRnge GDamping dScStep DysSolver') if (trim(QP_solver)=="g") then call initactivate(1,'GEnSteps GEnRnge GEnMode GDmRnge GreenFTresh GreenF2QP') else call initactivate(1,'SCEtresh') if (.not.l_cohsex) call initactivate(1,'NewtDchk ExtendOut OnMassShell QPExpand') endif else if (l_life) then call initactivate(1,'GbndRnge') endif endif #endif ! if (l_HF_and_locXC.or.l_elel_corr) then call INIT_QP_ctl_switch('G') #if defined _RT call INIT_RT_ctl_switch('G') #endif endif ! if (l_elel_corr) then ! call INIT_QP_ctl_switch('X') #if defined _RT call INIT_RT_ctl_switch('X') #endif ! call initactivate(1,'BoseCut ShiftedPaths') ! if (l_gw0) then if ((.not.l_cohsex).or.COHSEX_use_empties) call initactivate(1,'GbndRnge') if (.not.l_cohsex.and.trim(QP_solver)/='g') call initactivate(1,'GDamping') if (.not.l_cohsex) call initactivate(1,'dScStep') if (.not.l_elphoton_corr) then if (.not.l_ppa.and..not.l_mpa.and..not.l_cohsex) & & call X_activate('Xd',(/'BndsRn','NGsBlk',& & 'DmRnge','DmERef','CGrdSp','ETStps','EMStps',& & 'DrudeW','EhEngy','LongDr'/)) if (.not.l_cohsex) call initactivate(1,'GTermKind GTermEn DysSolver') if ( l_cohsex) call initactivate(1,'UseEbands') if (trim(QP_solver)=="g") then !DALV: switching off GsampType and GImRnge for now !call initactivate(1,'GsampType GEnSteps GEnRnge GImRnge GEnMode GDmRnge GreenFTresh GreenF2QP') call initactivate(1,'GEnSteps GEnRnge GEnMode GDmRnge GreenFTresh GreenF2QP') else call initactivate(1,'SCEtresh') if (.not.l_cohsex) call initactivate(1,'NewtDchk ExtendOut OnMassShell QPExpand') endif endif ! endif ! if (l_life.and..not.l_phel_corr) then call initactivate(1,'LifeTrCG') if (l_elel_corr) call X_activate('Xd',(/'BndsRn','NGsBlk','DmRnge','CGrdSp','DrudeW','EhEngy','LongDr'/)) endif endif ! #if defined _PHEL ! if (l_phel_corr) then call initactivate(1,'ElecTemp BoseTemp PH_SE_mode GphBRnge GDamping PHELQpts ElPhModes PHDbGdsize DbGdQsize GDamping') call initactivate(1,'ExtendOut OnMassShell') if ( l_gw0) call initactivate(1,'DysSolver GEnSteps GEnRnge PHEL_QPH_En') if (.not. l_gw0) call initactivate(1,'GDamping PHELTrans') endif ! #endif #if defined _ELPH ! if (l_elph_corr) then call INIT_QP_ctl_switch('G') call initactivate(1,'DysSolver') call initactivate(1,'GphBRnge FANdEtresh DWdEtresh ElPhModes GDamping dScStep ExtendOut ElPhRndNq RandQptsSphe') call initactivate(1,'GkkpDB WRgFsq NewtDchk OnMassShell') endif if (trim(QP_solver)=="g".and.l_elph_corr) then call initactivate(1,'GEnSteps GEnRnge GEnMode GDmRnge GreenFTresh GreenF2QP') call initactivate(-1,'WRgFsq NewtDchk GDamping ExtendOut OnMassShell') endif ! #endif ! endif ! if(l_alda_fxc.and.any((/l_em1s,l_em1d,l_acfdt,l_ppa,l_mpa,l_cohsex,l_gw0/)) ) call initactivate(1,'FxcGRLc RhoMapThresh') if( l_lrc_fxc.and.any((/l_em1s,l_em1d,l_acfdt,l_ppa,l_mpa,l_cohsex,l_gw0/)) ) call initactivate(1,'LRC_alpha LRC_beta') ! ! El-Ph: Frohlich Hamiltonian ! #if defined _ELPH ! if (l_elph_Hamiltonian) then call initactivate(1,'ElPhHBRnge ElPhModes ElPhHKpt GDamping REStresh') endif ! ! Exciton-phonon Self-energy ! if (l_EXCPH_gkkp) call initactivate(1,'ELPhExcStates ELPhExcSum LoutPath FANdEtresh EkpqShFact LDamping') if (l_EXCPH_gkkp) call initactivate(1,'ConstElph AbsElph AbsExc HoleContributionOnly ElectronContributionOnly MaxKShells') if (l_EXCPH_lifetime) call initactivate(1,'BoseTemp ElPhModes EXCTemp AlphaQ ExcPhOffDiago') if (l_EXCPH_lifetime) call initactivate(1,'InterpG2 NoMatrxEl KeepDeg ') if (l_EXCPH_optics) then call initactivate(1,'EXCTemp AlphaQ ElPhModes PLqres DbGdOnlyPh DbGdWEIGHTs NoMatrxEl EnRngeXd DmRngeXd ETStpsXd') call initactivate(1,'EXCPHdEtresh DbGdOnlyPh DbGdWEIGHTs NoMatrxEl EnRngeXd DmRngeXd ETStpsXd') endif ! #endif ! #if defined _SC || defined _RT ! ! Collisions ! if (l_eval_collisions) call initactivate( 0,'COLLBands COLLHoleBands COLLElecBands COLLBseMem') ! if ( (l_eval_collisions.or.l_real_time).and.l_elel_scatt ) call initactivate(1,'PlasmaPerc') ! if (l_eval_collisions.or.l_real_time.or.l_sc_run) then ! if ( .not. STRING_match(trim(H_potential),"NONE") ) call initactivate(1,'HXC_Potential') ! call initactivate( 1,'FFTGvecs') ! call initactivate( 1,'COLLCut') ! call initactivate(-1,'QpntsRXs') ! if( index(H_potential,"IP")>0 ) call initactivate(1,'HARRLvcs ALLGHAR') if( index(H_potential,"HARTREE")>0 .or. index(H_potential,"DEFAULT")>0 ) call initactivate(1,'HARRLvcs ALLGHAR') if( index(H_potential,"GS_XC")>0 .or. index(H_potential,"DEFAULT")>0 ) call initactivate(1,'VXCRLvcs UseNLCC FxcLibxc') ! if (l_eval_collisions) then if( STRING_match(trim(H_potential),"SEX").or.& & STRING_match(trim(H_potential),"FOCK") ) call initactivate(1,'EXXRLvcs ALLGexx') if( STRING_match(trim(H_potential),"SEX").or.& & STRING_match(trim(H_potential),"COH") ) call initactivate(1,'CORRLvcs ALLGexx') endif ! endif ! #endif ! #if defined _SC ! ! Self-Consistency ! if (l_sc_run) then ! call initactivate( 1,'SCBands') ! if( STRING_match(trim(H_potential),"SEX").or.& & STRING_match(trim(H_potential),"COH") ) call initactivate(1,'UseEbands SCUpWIter') ! if( STRING_match(trim(H_potential),"EXX").or.& & STRING_match(trim(H_potential),"SRPA") ) call initactivate(1,'OEPapprox OEPItSolver') ! call initactivate(1,'SCIter SCEtresh SCRhoTresh SC_precondition') call initactivate(1,'SCmixing SClwBand SCnlMix BandMix') call initactivate(1,'SCdiag Mean_Potential') ! call initactivate(1,'SCneqKIND SCmu SCocc SCcohIt') ! endif ! #endif ! #if defined _RT ! ! AM March 2024: the following line has been added in order to perform ! e-p calculations on top of RT carriers distribution. ! if (l_elph_corr) call INIT_RT_ctl_switch('G') ! if (l_real_time) then ! call INIT_QP_ctl_switch('G') ! call INIT_RT_ctl_switch('G') ! call initactivate(1,'RTskipImposeN RTeeImposeE InducedField') call initactivate(1,'Gauge VelGaugeCorr VelGaugeNoDiam PfromJ RTgradk RTUpdateSOC RTUpdateE SaveGhistory') call initactivate(1,'RTEqScatt RTImpForMet RTzeroTempRef RTskipPHabs RTEvalEnergy RTEvalEntropy') call initactivate(1,'dTupdateTime dTupdateTimeSet dTupdateJump dTupdateTresh dT_MAX dT_SET') if (l_elel_scatt .or. l_elph_scatt .or. l_elphoton_scatt) then call initactivate(1,'LifeExtrapolation LifeExtrapSteps LifeFitTemp RelaxTimeApprox RTAtemp RTAchem LifeFitTemp') endif if (l_elph_scatt) call initactivate(1,'MemTresh RandQptsSphe RT_T_evol ElPhModes UseDebyeE') if (l_elel_scatt) call initactivate( 1,'EERimPerc') ! call initactivate(1,'RTBands RTHoleBands RTElecBands Integrator GrKind TwoAlph RTehEny ScattTresh') call initactivate(1,'RADLifeTime RADmagnific PhLifeTime DephCVonly DephEThresh DephTRange') call initactivate(1,'RTstep NEsteps NETime DipoleEtresh SPINprojected') call initactivate(1,'IOtime IOCachetime') ! ! n_ext_fields is by default 0. It is set to the input number of fields when a command line option is provided (below in init.F) ! or parsed from the input file in INIT_load.F ! do i1=1,n_ext_fields call Afield_activate(i1) enddo ! endif ! #endif ! #if defined _NL if (l_nl_optics) then call initactivate(1,'FFTGvecs NLBands NLHoleBands NLElecBands NLverbosity NLstep NLtime NLintegrator NLCorrelation NLLrcAlpha') call initactivate(1,'TestOSCLL NoUseSymm VelGaugeNoDiam') if(.not.l_nl_p_and_p) call initactivate(1,'NLEnRange NLEnSteps NLrotaxis NLAngSteps NLMaxAng') if( l_nl_p_and_p) call initactivate(1,'IOtime IOCachetime SaveVbhistory FLOrder') call initactivate(1,'NLDamping RADLifeTime UseDipoles FrSndOrd NoComprCOLL COLLCut EvalCurrent InducedField') call initactivate(1,'TestOSCLL Gauge RADLifeTime HARRLvcs EXXRLvcs CORRLvcs') call init_QP_ctl_switch('G') ! do i1=1,n_ext_fields call Afield_activate(i1) enddo ! endif #endif ! #if defined _FL if (l_fl_optics) then call initactivate(1,'NLBands NLEnRange NLEnSteps NLDamping NLCorrelation NoUseSymm') call initactivate(1,'FFTGvecs HARRLvcs EXXRLvcs Dephase FL_2D_ild') call initactivate(1,'Field1_Dir Field1_Int Field1_Phase') call initactivate(1,'Xorder Xadd_mode Xthresh_1 Xthresh_2 Xthresh_3 FL_solver') call initactivate(1,'FL_deg_thresh FL_deg_lift S_inv_mode FL_beta FL_max_it') call initactivate(1,'Field1_Phase,FL_2D_ild, FL_Pade') endif #endif ! #if defined _SC ! ! Magnetic ! if (l_sc_magnetic) then call initactivate(1,'Hamiltonian B_Field B_psi B_theta B_Gauge PhaseTrick') if (MAG_landau) call initactivate(1,'B_radius') endif ! ! Electric ! if (l_sc_electric) then call initactivate(1,'EvPolarization ExtF_Dir ExtF_Int FrSndOrd') endif ! #endif ! contains ! ! subroutine X_activate(mode,what) character(2)::mode character(6)::what(:) ! Work Space integer ::i1 do i1=1,size(what,1) call initactivate(1,what(i1)//mode) enddo end subroutine ! end subroutine ! ! subroutine CPU_activate(what) use drivers, ONLY:l_sc_run implicit none character(*) :: what #if defined _MPI call initactivate(1,"PAR_def_mode") call initactivate(1,what//"_CPU") call initactivate(1,what//"_ROLEs") if (what=="X_and_IO".or.what=="X".or.what=="BS") call initactivate(1,what//"_nCPU_LinAlg_INV") if (what=="BS") call initactivate(1,what//"_nCPU_LinAlg_DIAGO") if (what=="SE".and.l_sc_run) call initactivate(1,what//"_nCPU_LinAlg_DIAGO") #endif #if defined _SCALAPACK && defined _MPI if (what=="SLK") call initactivate(1,what//"_nCPU_LinAlg_INV") #endif ! end subroutine