mirror of
https://github.com/cosmo-sims/MUSIC.git
synced 2024-09-19 17:03:46 +02:00
final fixes to masking
This commit is contained in:
parent
8ecb337170
commit
f14552e106
1 changed files with 70 additions and 9 deletions
79
mesh.hh
79
mesh.hh
|
@ -667,20 +667,30 @@ public:
|
|||
|
||||
m_ref_masks[ilevel]->init( size(ilevel,0), size(ilevel,1), size(ilevel,2), 0.0 );
|
||||
|
||||
for( size_t i=0; i<size(ilevel,0); i++ )
|
||||
for( size_t i=0; i<size(ilevel,0); i+=2 )
|
||||
{
|
||||
xq[0] = (offset_abs(ilevel,0) + i)*dx + 0.5*dx + shift[0];
|
||||
for( size_t j=0; j<size(ilevel,1); ++j )
|
||||
for( size_t j=0; j<size(ilevel,1); j+=2 )
|
||||
{
|
||||
xq[1] = (offset_abs(ilevel,1) + j)*dx + 0.5*dx + shift[1];
|
||||
for( size_t k=0; k<size(ilevel,2); ++k )
|
||||
for( size_t k=0; k<size(ilevel,2); k+=2 )
|
||||
{
|
||||
xq[2] = (offset_abs(ilevel,2) + k)*dx + 0.5*dx + shift[2];
|
||||
|
||||
|
||||
short mask_val = -1.0; // outside mask
|
||||
if( the_region_generator->query_point( xq, ilevel ) || ilevel == (int)levelmin() )
|
||||
(*m_ref_masks[ilevel])(i,j,k) = 1.0; // inside mask
|
||||
else
|
||||
(*m_ref_masks[ilevel])(i,j,k) = -1.0; // outside mask
|
||||
mask_val = 1.0; // inside mask
|
||||
|
||||
(*m_ref_masks[ilevel])(i+0,j+0,k+0) = mask_val;
|
||||
(*m_ref_masks[ilevel])(i+0,j+0,k+1) = mask_val;
|
||||
(*m_ref_masks[ilevel])(i+0,j+1,k+0) = mask_val;
|
||||
(*m_ref_masks[ilevel])(i+0,j+1,k+1) = mask_val;
|
||||
(*m_ref_masks[ilevel])(i+1,j+0,k+0) = mask_val;
|
||||
(*m_ref_masks[ilevel])(i+1,j+0,k+1) = mask_val;
|
||||
(*m_ref_masks[ilevel])(i+1,j+1,k+0) = mask_val;
|
||||
(*m_ref_masks[ilevel])(i+1,j+1,k+1) = mask_val;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -689,7 +699,57 @@ public:
|
|||
bhave_refmask = true;
|
||||
|
||||
#if 1
|
||||
for( int ilevel = (int)levelmax(); ilevel > (int)levelmin(); --ilevel )
|
||||
for( int ilevel = (int)levelmin(); ilevel < (int)levelmax(); ++ilevel )
|
||||
{
|
||||
for( size_t i=0; i<size(ilevel,0); i++ )
|
||||
{
|
||||
for( size_t j=0; j<size(ilevel,1); j++ )
|
||||
{
|
||||
for( size_t k=0; k<size(ilevel,2); k++ )
|
||||
{
|
||||
bool fine_is_flagged = false;
|
||||
|
||||
int ifine[] = {
|
||||
2*(int)i-2*(int)offset(ilevel+1,0),
|
||||
2*(int)j-2*(int)offset(ilevel+1,1),
|
||||
2*(int)k-2*(int)offset(ilevel+1,2),
|
||||
};
|
||||
|
||||
if(ifine[0]>=0 && ifine[0] < (int)size(ilevel+1,0) &&
|
||||
ifine[1]>=0 && ifine[1] < (int)size(ilevel+1,1) &&
|
||||
ifine[2]>=0 && ifine[2] < (int)size(ilevel+1,2) )
|
||||
{
|
||||
fine_is_flagged |= (*m_ref_masks[ilevel+1])(ifine[0]+0,ifine[1]+0,ifine[2]+0)>0.;
|
||||
fine_is_flagged |= (*m_ref_masks[ilevel+1])(ifine[0]+0,ifine[1]+0,ifine[2]+1)>0.;
|
||||
fine_is_flagged |= (*m_ref_masks[ilevel+1])(ifine[0]+0,ifine[1]+1,ifine[2]+0)>0.;
|
||||
fine_is_flagged |= (*m_ref_masks[ilevel+1])(ifine[0]+0,ifine[1]+1,ifine[2]+1)>0.;
|
||||
fine_is_flagged |= (*m_ref_masks[ilevel+1])(ifine[0]+1,ifine[1]+0,ifine[2]+0)>0.;
|
||||
fine_is_flagged |= (*m_ref_masks[ilevel+1])(ifine[0]+1,ifine[1]+0,ifine[2]+1)>0.;
|
||||
fine_is_flagged |= (*m_ref_masks[ilevel+1])(ifine[0]+1,ifine[1]+1,ifine[2]+0)>0.;
|
||||
fine_is_flagged |= (*m_ref_masks[ilevel+1])(ifine[0]+1,ifine[1]+1,ifine[2]+1)>0.;
|
||||
|
||||
if( fine_is_flagged && (*m_ref_masks[ilevel])(i,j,k) > 0. )
|
||||
{
|
||||
(*m_ref_masks[ilevel])(i,j,k) = 0.5; // cell is refined
|
||||
|
||||
(*m_ref_masks[ilevel+1])(ifine[0]+0,ifine[1]+0,ifine[2]+0) = 1.0;
|
||||
(*m_ref_masks[ilevel+1])(ifine[0]+0,ifine[1]+0,ifine[2]+1) = 1.0;
|
||||
(*m_ref_masks[ilevel+1])(ifine[0]+0,ifine[1]+1,ifine[2]+0) = 1.0;
|
||||
(*m_ref_masks[ilevel+1])(ifine[0]+0,ifine[1]+1,ifine[2]+1) = 1.0;
|
||||
(*m_ref_masks[ilevel+1])(ifine[0]+1,ifine[1]+0,ifine[2]+0) = 1.0;
|
||||
(*m_ref_masks[ilevel+1])(ifine[0]+1,ifine[1]+0,ifine[2]+1) = 1.0;
|
||||
(*m_ref_masks[ilevel+1])(ifine[0]+1,ifine[1]+1,ifine[2]+0) = 1.0;
|
||||
(*m_ref_masks[ilevel+1])(ifine[0]+1,ifine[1]+1,ifine[2]+1) = 1.0;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*for( int ilevel = (int)levelmax(); ilevel > (int)levelmin(); --ilevel )
|
||||
{
|
||||
for( size_t i=0; i<size(ilevel,0); i+=2 )
|
||||
{
|
||||
|
@ -698,6 +758,7 @@ public:
|
|||
for( size_t k=0; k<size(ilevel,2); k+=2 )
|
||||
{
|
||||
bool fine_is_flagged = false;
|
||||
float flag_val = 2.0;
|
||||
|
||||
fine_is_flagged |= (*m_ref_masks[ilevel])(i+0,j+0,k+0)>0.;
|
||||
fine_is_flagged |= (*m_ref_masks[ilevel])(i+0,j+0,k+1)>0.;
|
||||
|
@ -725,7 +786,7 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
}*/
|
||||
|
||||
#else
|
||||
// determine the refined cells
|
||||
|
@ -939,7 +1000,7 @@ public:
|
|||
for( unsigned j=0; j<get_grid(ilevel)->size(1); ++j )
|
||||
for( unsigned k=0; k<get_grid(ilevel)->size(2); ++k )
|
||||
//if( ! is_refined(ilevel,i,j,k) )
|
||||
if( gh.is_in_mask(ilevel,i,j,k) && !gh.is_refined(ilevel,i,j,k) )
|
||||
if( is_in_mask(ilevel,i,j,k) && !is_refined(ilevel,i,j,k) )
|
||||
++npcount;
|
||||
|
||||
return npcount;
|
||||
|
|
Loading…
Reference in a new issue