Skip to content

Commit 1cb58ac

Browse files
committed
SF pairs now work properly in compressible
1 parent 94aba8d commit 1cb58ac

2 files changed

Lines changed: 125 additions & 139 deletions

File tree

src_compressible/compressible_functions.cpp

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -124,40 +124,51 @@ void InitializeCompressibleSFParams(amrex::Vector< int >& prim_SF_pairA_list,
124124
ParmParse pp;
125125

126126
// Get structure factor pairs
127-
amrex::Vector<int> temp_prim(structVarsPrim, -1);
128-
amrex::Vector<int> temp_cons(structVarsCons, -1);
129-
if (pp.queryarr("SF_prim_pairA",temp_prim,0,structVarsPrim)) {
130-
for (int i=0; i<structVarsPrim; ++i) {
131-
if (temp_prim[i] > structVarsPrim) {
132-
amrex::Error("SF_prim_pairA index can not be greater than 2*AMREX_SPACEDIM+2*nspecies+2");
133-
}
134-
else { if (temp_prim[i] >=0 ) prim_SF_pairA_list.push_back(temp_prim[i]);}
135-
}
127+
{
128+
amrex::Vector<int> temp_prim(structVarsPrim,-1);
129+
if (pp.queryarr("SF_prim_pairA",temp_prim,0)) {
130+
for (int i=0; i<structVarsPrim; ++i) {
131+
if (temp_prim[i] > structVarsPrim) {
132+
amrex::Error("SF_prim_pairA index can not be greater than 2*AMREX_SPACEDIM+2*nspecies+2");
133+
}
134+
else { if (temp_prim[i] >=0 ) prim_SF_pairA_list.push_back(temp_prim[i]);}
135+
}
136+
}
136137
}
137-
if (pp.queryarr("SF_prim_pairB",temp_prim,0,structVarsPrim)) {
138-
for (int i=0; i<structVarsPrim; ++i) {
139-
if (temp_prim[i] > structVarsPrim) {
140-
amrex::Error("SF_prim_pairB index can not be greater than 2*AMREX_SPACEDIM+2*nspecies+2");
141-
}
142-
else { if (temp_prim[i] >=0 ) prim_SF_pairB_list.push_back(temp_prim[i]);}
143-
}
138+
{
139+
amrex::Vector<int> temp_prim(structVarsPrim,-1);
140+
if (pp.queryarr("SF_prim_pairB",temp_prim,0)) {
141+
for (int i=0; i<structVarsPrim; ++i) {
142+
if (temp_prim[i] > structVarsPrim) {
143+
amrex::Error("SF_prim_pairB index can not be greater than 2*AMREX_SPACEDIM+2*nspecies+2");
144+
}
145+
else { if (temp_prim[i] >=0 ) prim_SF_pairB_list.push_back(temp_prim[i]);}
146+
}
147+
}
144148
}
145149

146-
if (pp.queryarr("SF_cons_pairA",temp_cons,0,structVarsCons)) {
147-
for (int i=0; i<structVarsCons; ++i) {
148-
if (temp_cons[i] > structVarsCons) {
149-
amrex::Error("SF_cons_pairA index can not be greater than 2*AMREX_SPACEDIM+nspecies+3");
150-
}
151-
else { if (temp_cons[i] >= 0) cons_SF_pairA_list.push_back(temp_cons[i]);}
152-
}
150+
{
151+
amrex::Vector<int> temp_cons(structVarsCons,-1);
152+
if (pp.queryarr("SF_cons_pairA",temp_cons,0)) {
153+
for (int i=0; i<structVarsCons; ++i) {
154+
if (temp_cons[i] > structVarsCons) {
155+
amrex::Error("SF_cons_pairA index can not be greater than 2*AMREX_SPACEDIM+nspecies+3");
156+
}
157+
else { if (temp_cons[i] >= 0) cons_SF_pairA_list.push_back(temp_cons[i]);}
158+
}
159+
}
153160
}
154-
if (pp.queryarr("SF_cons_pairB",temp_cons,0,structVarsCons)) {
155-
for (int i=0; i<structVarsPrim; ++i) {
156-
if (temp_cons[i] > structVarsCons) {
157-
amrex::Error("SF_cons_pairB index can not be greater than 2*AMREX_SPACEDIM+nspecies+3");
158-
}
159-
else{ if (temp_cons[i] >= 0) cons_SF_pairB_list.push_back(temp_cons[i]);}
160-
}
161+
162+
{
163+
amrex::Vector<int> temp_cons(structVarsCons,-1);
164+
if (pp.queryarr("SF_cons_pairB",temp_cons,0)) {
165+
for (int i=0; i<structVarsCons; ++i) {
166+
if (temp_cons[i] > structVarsCons) {
167+
amrex::Error("SF_cons_pairB index can not be greater than 2*AMREX_SPACEDIM+nspecies+3");
168+
}
169+
else{ if (temp_cons[i] >= 0) cons_SF_pairB_list.push_back(temp_cons[i]);}
170+
}
171+
}
161172
}
162173

163174
if (prim_SF_pairA_list.size()!=prim_SF_pairB_list.size())

src_compressible_stag/main_driver.cpp

Lines changed: 84 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -420,145 +420,100 @@ void main_driver(const char* argv)
420420
// "primitive" variable structure factor will contain
421421
// rho
422422
// vel (shifted)
423+
// vel (averaged)
423424
// T
424425
// Yk
425-
// vel (averaged)
426-
// rhoYk (copy from cons)
427-
int structVarsPrim = 2*AMREX_SPACEDIM+2*nspecies+2;
428-
429-
// "conserved" variable structure factor will contain
430-
// rho
431-
// j (averaged)
432-
// rho*E
433-
// rho*Yk
434-
// Temperature (not in the conserved array; will have to copy it in)
435-
// j (shifted)
436-
int structVarsCons = 2*AMREX_SPACEDIM+nspecies+3;
437-
438-
// for specific pairs
439-
amrex::Vector< int > prim_SF_pairA_list;
440-
amrex::Vector< int > prim_SF_pairB_list;
441-
amrex::Vector< int > cons_SF_pairA_list;
442-
amrex::Vector< int > cons_SF_pairB_list;
443-
InitializeCompressibleSFParams(prim_SF_pairA_list,
444-
prim_SF_pairB_list,cons_SF_pairA_list,
445-
cons_SF_pairB_list,structVarsPrim,
446-
structVarsCons);
447-
448-
Vector< std::string > prim_var_names_all;
449-
prim_var_names_all.resize(structVarsPrim);
426+
int structVarsPrim = 2*AMREX_SPACEDIM+nspecies+2;
427+
428+
Vector< std::string > prim_var_names;
429+
prim_var_names.resize(structVarsPrim);
450430

451431
int cnt = 0;
452432
int numvars;
453433
std::string x;
454434

455435
// rho
456-
prim_var_names_all[cnt] = "rho";
436+
prim_var_names[cnt] = "rho";
457437
++cnt;
458438

459-
// velx, vely, velz
439+
// velx, vely, velz [CC]
460440
for (int d=0; d<AMREX_SPACEDIM; d++) {
461441
x = "velCC";
462442
x += (120+d);
463-
prim_var_names_all[cnt] = x;
464-
++cnt;
465-
}
466-
467-
// Temp
468-
prim_var_names_all[cnt] = "Temp";
469-
++cnt;
470-
471-
// Yk
472-
for (int d=0; d<nspecies; d++) {
473-
x = "Y";
474-
x += (49+d);
475-
prim_var_names_all[cnt] = x;
443+
prim_var_names[cnt] = x;
476444
++cnt;
477445
}
478446

479-
// velx, vely, velz
447+
// velx, vely, velz [FACE]
480448
for (int d=0; d<AMREX_SPACEDIM; d++) {
481449
x = "velFACE";
482450
x += (120+d);
483-
prim_var_names_all[cnt] = x;
451+
prim_var_names[cnt] = x;
484452
++cnt;
485453
}
486454

487-
// rho*Yk
455+
// Temp
456+
prim_var_names[cnt] = "Temp";
457+
++cnt;
458+
459+
// Yk
488460
for (int d=0; d<nspecies; d++) {
489-
x = "rhoY";
461+
x = "Y";
490462
x += (49+d);
491-
prim_var_names_all[cnt] = x;
463+
prim_var_names[cnt] = x;
492464
++cnt;
493465
}
494466

495-
// for specific pairs
496-
Vector< std::string > prim_var_names;
497-
if (do_SF_pair_prim) {
498-
prim_var_names.resize(prim_SF_pairA_list.size());
499-
for (int i=0;i<prim_SF_pairA_list.size(); ++i) {
500-
prim_var_names[i] = prim_var_names_all[prim_SF_pairA_list[i]];
501-
}
502-
}
503-
else {
504-
prim_var_names.resize(structVarsPrim);
505-
std::copy(prim_var_names_all.begin(), prim_var_names_all.end(), std::back_inserter(prim_var_names));
506-
}
467+
// "conserved" variable structure factor will contain
468+
// rho
469+
// j (averaged)
470+
// j (shifted)
471+
// rho*E
472+
// Temperature (not in the conserved array; will have to copy it in)
473+
// rho*Yk
474+
int structVarsCons = 2*AMREX_SPACEDIM+nspecies+3;
507475

508-
Vector< std::string > cons_var_names_all;
509-
cons_var_names_all.resize(structVarsCons);
476+
Vector< std::string > cons_var_names;
477+
cons_var_names.resize(structVarsCons);
510478

511479
cnt = 0;
512480

513481
// rho
514-
cons_var_names_all[cnt] = "rho";
482+
cons_var_names[cnt] = "rho";
515483
++cnt;
516484

517-
// jx, jy, jz
485+
// jx, jy, jz [CC]
518486
for (int d=0; d<AMREX_SPACEDIM; d++) {
519487
x = "jCC";
520488
x += (120+d);
521-
cons_var_names_all[cnt] = x;
489+
cons_var_names[cnt] = x;
490+
++cnt;
491+
}
492+
493+
// jx, jy, jz [FACE]
494+
for (int d=0; d<AMREX_SPACEDIM; d++) {
495+
x = "jFACE";
496+
x += (120+d);
497+
cons_var_names[cnt] = x;
522498
++cnt;
523499
}
524500

525501
// rho*E
526-
cons_var_names_all[cnt] = "rhoE";
502+
cons_var_names[cnt] = "rhoE";
503+
++cnt;
504+
505+
// Temp
506+
cons_var_names[cnt] = "Temp";
527507
++cnt;
528508

529509
// rho*Yk
530510
for (int d=0; d<nspecies; d++) {
531511
x = "rhoY";
532512
x += (49+d);
533-
cons_var_names_all[cnt] = x;
534-
++cnt;
535-
}
536-
537-
// Temp
538-
cons_var_names_all[cnt] = "Temp";
539-
++cnt;
540-
541-
// jx, jy, jz
542-
for (int d=0; d<AMREX_SPACEDIM; d++) {
543-
x = "jFACE";
544-
x += (120+d);
545-
cons_var_names_all[cnt] = x;
513+
cons_var_names[cnt] = x;
546514
++cnt;
547515
}
548516

549-
// for specific pairs
550-
Vector< std::string > cons_var_names;
551-
if (do_SF_pair_cons) {
552-
cons_var_names.resize(cons_SF_pairA_list.size());
553-
for (int i=0;i<cons_SF_pairA_list.size(); ++i) {
554-
cons_var_names[i] = cons_var_names_all[cons_SF_pairA_list[i]];
555-
}
556-
}
557-
else {
558-
cons_var_names.resize(structVarsCons);
559-
std::copy(cons_var_names_all.begin(), cons_var_names_all.end(), std::back_inserter(cons_var_names));
560-
}
561-
562517
Vector< std::string > surfcov_var_names;
563518
if (n_ads_spec > 0) {
564519
surfcov_var_names.resize(n_ads_spec);
@@ -569,6 +524,16 @@ void main_driver(const char* argv)
569524
}
570525
}
571526

527+
// for specific pairs
528+
amrex::Vector< int > prim_SF_pairA_list;
529+
amrex::Vector< int > prim_SF_pairB_list;
530+
amrex::Vector< int > cons_SF_pairA_list;
531+
amrex::Vector< int > cons_SF_pairB_list;
532+
InitializeCompressibleSFParams(prim_SF_pairA_list,
533+
prim_SF_pairB_list,cons_SF_pairA_list,
534+
cons_SF_pairB_list,structVarsPrim,
535+
structVarsCons);
536+
572537
// scale SF results by inverse cell volume
573538
Vector<Real> var_scaling_prim;
574539
if (do_SF_pair_prim) {
@@ -582,7 +547,7 @@ void main_driver(const char* argv)
582547
}
583548

584549
Vector<Real> var_scaling_cons;
585-
if (do_SF_pair_cons) {
550+
if (do_SF_pair_prim) {
586551
var_scaling_cons.resize(cons_SF_pairA_list.size());
587552
}
588553
else {
@@ -1542,45 +1507,55 @@ void main_driver(const char* argv)
15421507
/////////// First structFactPrimMF ////////////////
15431508
cnt = 0;
15441509

1545-
// copy [rho, vx, vy, vz, T]
1546-
numvars = 5;
1510+
// copy [rho, vxCC, vyCC, vzCC]
1511+
numvars = 4;
15471512
MultiFab::Copy(structFactPrimMF, prim, 0, cnt, numvars, 0);
15481513
cnt+=numvars;
15491514

1550-
// copy Yk
1551-
numvars = nspecies;
1552-
MultiFab::Copy(structFactPrimMF, prim, AMREX_SPACEDIM+3, cnt, numvars, 0);
1553-
cnt+=numvars;
1554-
15551515
// copy velFACE
15561516
for (int d=0; d<AMREX_SPACEDIM; ++d) {
1557-
ShiftFaceToCC(vel[d],0,structFactPrimMF,cnt,1);
1558-
++cnt;
1517+
ShiftFaceToCC(vel[d],0,structFactPrimMF,cnt,1);
1518+
++cnt;
15591519
}
15601520

1561-
// copy rhoYk
1521+
// copy T
1522+
MultiFab::Copy(structFactPrimMF, prim, 4, cnt, 1, 0);
1523+
++cnt;
1524+
1525+
// copy Yk
15621526
numvars = nspecies;
1563-
MultiFab::Copy(structFactPrimMF, cu, AMREX_SPACEDIM+2, cnt, numvars, 0);
1527+
MultiFab::Copy(structFactPrimMF, prim, 6, cnt, numvars, 0);
1528+
cnt+=numvars;
1529+
15641530
////////////////////////////////////////////////////
15651531

15661532
////////////// Second structFactConsMF /////////////
15671533
cnt = 0;
15681534

1569-
// copy [rho, jx, jy, jz, rhoE, rhoYk]
1570-
numvars = nvars;
1535+
// copy [rho, jxCC, jyCC, jzCC]
1536+
numvars = 4;
15711537
MultiFab::Copy(structFactConsMF, cu, 0, cnt, numvars, 0);
15721538
cnt+=numvars;
15731539

1574-
// T
1575-
numvars = 1;
1576-
MultiFab::Copy(structFactConsMF, prim, AMREX_SPACEDIM+1, cnt, numvars, 0);
1577-
cnt+=numvars;
1578-
1579-
// copy jxFACE
1540+
// copy jFACE
15801541
for (int d=0; d<AMREX_SPACEDIM; ++d) {
15811542
ShiftFaceToCC(cumom[d],0,structFactConsMF,cnt,1);
15821543
++cnt;
15831544
}
1545+
1546+
// rhoE
1547+
MultiFab::Copy(structFactConsMF, cu, 4, cnt, 1, 0);
1548+
++cnt;
1549+
1550+
// T
1551+
MultiFab::Copy(structFactConsMF, prim, 4, cnt, 1, 0);
1552+
++cnt;
1553+
1554+
// rho*Yk
1555+
numvars = nspecies;
1556+
MultiFab::Copy(structFactConsMF, cu, 5, cnt, numvars, 0);
1557+
cnt+=numvars;
1558+
15841559
////////////////////////////////////////////////////
15851560

15861561
if ((do_1D==0) and (do_2D==0)) {

0 commit comments

Comments
 (0)