|
[Sponsors] |
[snappyHexMesh] snappyHexMesh: problems with layers |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
June 6, 2012, 15:21 |
snappyHexMesh: problems with layers
|
#1 |
New Member
Giulio
Join Date: Oct 2011
Posts: 28
Rep Power: 14 |
Hi Foamers.
I'm a beginner of OpenFoam.I'm trying to simulate an internal airflow of an airbox in a racing car. I exported the geometry in .stl ad i'm trying to mesh with snappyHexMesh.At present i'm in trouble because i can't understand why snappy doesn't add layers! Any suggestion is really appreciated Here the snappyHexMeshDict Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.1.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object snappyHexMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // non ho capito perchè ma pare che questi tre siano sempre true. castellatedMesh true; snap true; addLayers true; geometry // devo dichiarare tutte le geometria che userò { sistema_aspirazione.stl { type triSurfaceMesh; name sistema_aspirazione; } Box // regione di delimitazione { type searchableBox; // ?? searchableBox ?? cos'è?e che significano quei numeri? min (-500.0 -500.0 -500.0); // forse sono i 2 punti opposti che ci definiscono il box?? max ( 500.0 500.0 500.0); // definire qst cubo vuol dire forse fare a meno della mesh di // background definita in blockMeshDict } Box_restrictor // regione di delimitazione { type searchableBox; min (-280.0 290.0 -20.0); max ( -87.0 400.0 20.0); } Box_plenum // regione di delimitazione { type searchableBox; min (-141.0 -106.0 -185.0); max ( 86.0 -3.0 185.0); } }; castellatedMeshControls { maxLocalCells 100000; // maxLocalCells deve essere < maxGlobalCells // maxLocalCells è il max num di celle per // processore durante il "raffinamento" della mesh maxGlobalCells 2000000; // maxGlobalCells è il limite(approssimato) oltre // il quale il raffinamento della mesh si ferma. // N.B. questo numero comprende tutte le celle // prima dell'eliminazione. minRefinementCells 10; // se minRefinementCells >= numero di celle da affinare // questo parametro stoppa il processo. maxLoadUnbalance 0.10; // ????? nCellsBetweenLevels 1; // numero di strati tra 2 diversi livelli // Dovrei riuscire a estrarre le features da .stl in una file featureEdgeMesh // utilizzando il comando: // surfaceFeatureExtract -includedAngle 150 sistema_aspirazione.stl features // Non riesco perchè mi da il seguente errore: // Feature line extraction is only valid on closed manifold surfaces. // Surface : "sistema_aspirazione.stl" // Output feature set : "features" // Al momento pare che lo legga direttamente da constant/triSurface features ( //{ // file "sistema_aspirazione.eMesh"; // level 2; //} ); // Per ogni superficie bisogna stabilire 2 livelli: un minimo ed un massimo. // Ogni cella che interseca una superficie viene affinata con il livello minimo. // Ogni cella che invece "vede" un intersezione il cui angolo è>resolveFeatureAngle // viene affinata con il livello massimo. resolveFeatureAngle definisce un valore // in gradi dell'angolo limite. refinementSurfaces { sistema_aspirazione { level (4 5); } } resolveFeatureAngle 30; // Le celle che giacciono entro uno specificato volume possono essere // ulteriormente affinate con una delle seguenti modalità: // -inside: affina le celle interne al volume; // -outside: affina le celle esterne al volume; // -distance: affina le celle le celle ad una certa distanza dalla superficie. // La modalità deve essere inserita col seguente formato: // levels (<distanza> <livello>). Nel caso in cui si opti per inside(o outside) // va comunque inserita l'entrata <distanza> anche se verrà ignorata. refinementRegions { /* Box { mode inside; levels ((1.0 5)); // la prima entrata (1.0) verrà ignorata } Box_restrictor // vorrei infittire la mesh sul restrictor { mode inside; levels ((1.0 6)); // la prima entrata (1.0) verrà ignorata } */ sistema_aspirazione { mode distance; levels ((1.0 6) (4.0 5) (8.0 3)); } } // Il vettore locationInMesh ci identifica un punto interno alla regione // (delimitata da una superficie chiusa) da meshare. // N.B. Questo vettore deve puntare all'interno di una cella e mai su // una faccia. locationInMesh (50.11 -20.11 0.11); // NON HO CAPITO DI CHE STIAMO A PARLÀ QUI!!! // Whether any faceZones (as specified in the refinementSurfaces) // are only on the boundary of corresponding cellZones or also allow // free-standing zone faces. Not used if there are no faceZones. allowFreeStandingZoneFaces true; } // In questa parte si definiscono i parametri per eliminare le // frastagliature della mesh. snapControls { nSmoothPatch 3; // numero di iterazioni della levigatura prima di trovare // corrispondenza tra le superfici tolerance 4.0; //rapporto tra la distanza a cui i putni vengono annessi // alla superficie e la lunghezza max del bordo(localmente) nSolveIter 0; // numero di iterazioni di mitigazione dello spostamento // della mesh nRelaxIter 5; // numero max di iterazione di rilassamento della superficie } // A questo punto la mesh può ulteriormente essere migliorata introducendo // degli strati di celle allineati con la superficie di confine. addLayersControls { // I parametri di spessore sottostanti sono relativi alle celle indeformate(true) // o sono in valore assoluto(false)? relativeSizes true; // devo definire i layers che voglio introdurre layers { sistema_aspirazione_OBJ { nSurfaceLayers 5; } } expansionRatio 1.1; // fattore di espansione per i layers finalLayerThickness 1e-3; // spessore delle celle del layer // N.B. fa attenzione al parametro relativeSizes // per vedere se le misure sono assolute o relative minThickness 1e-4; // spessore minimo delle celle del layer // N.B. fa attenzione al parametro relativeSizes // per vedere se le misure sono assolute o relative nGrow 10; // non ho capito cos è ma dicono che aiuti a convergere il processo // di aggiunta dei layers featureAngle 60; // angolo oltre il quale non vengono estruse le superfici nRelaxIter 3; // numero max di iterazioni di rilassamento // N.B. può anche fermarsi prima se la mesh è ok nSmoothSurfaceNormals 3; // numero di iterazioni di levigatura delle normali // alle superfici nSmoothNormals 3; // numero di iterazioni di levigatura delle direzioni // di cosa??? nSmoothThickness 10; // ???? maxFaceThicknessRatio 0.5; // blocca la crescita sulla cella più deformata maxThicknessToMedialRatio 0.3; // riduce la crescita dei layer qnd qst parametro è grande minMedianAxisAngle 90; // ??? nBufferCellsNoExtrude 0; // ??? // Overall max number of layer addition iterations. The mesher will exit // if it reaches this number of iterations; possibly with an illegal // mesh. nLayerIter 50; } // Generic mesh quality settings. At any undoable phase these determine // where to undo. meshQualityControls { //- Maximum non-orthogonality allowed. Set to 180 to disable. maxNonOrtho 65; //- Max skewness allowed. Set to <0 to disable. maxBoundarySkewness 20; maxInternalSkewness 4; //- Max concaveness allowed. Is angle (in degrees) below which concavity // is allowed. 0 is straight face, <0 would be convex face. // Set to 180 to disable. maxConcave 80; //- Minimum pyramid volume. Is absolute volume of cell pyramid. // Set to a sensible fraction of the smallest cell volume expected. // Set to very negative number (e.g. -1E30) to disable. minVol 1e-13; //- Minimum quality of the tet formed by the face-centre // and variable base point minimum decomposition triangles and // the cell centre. This has to be a positive number for tracking // to work. Set to very negative number (e.g. -1E30) to // disable. // <0 = inside out tet, // 0 = flat tet // 1 = regular tet minTetQuality 1e-30; //- Minimum face area. Set to <0 to disable. minArea -1; //- Minimum face twist. Set to <-1 to disable. dot product of face normal //- and face centre triangles normal minTwist 0.02; //- minimum normalised cell determinant //- 1 = hex, <= 0 = folded or flattened illegal cell minDeterminant 0.001; //- minFaceWeight (0 -> 0.5) minFaceWeight 0.02; //- minVolRatio (0 -> 1) minVolRatio 0.01; //must be >0 for Fluent compatibility minTriangleTwist -1; // Advanced //- Number of error distribution iterations nSmoothScale 4; //- amount to scale back displacement at error points errorReduction 0.75; } // Advanced // Flags for optional output // 0 : only write final meshes // 1 : write intermediate meshes // 2 : write volScalarField with cellLevel for postprocessing // 4 : write current intersections as .obj files debug 0; // Merge tolerance. Is fraction of overall bounding box of initial mesh. // Note: the write tolerance needs to be higher than this. mergeTolerance 1e-6; // ************************************************************************* // |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
[snappyHexMesh] snappyHexMesh fails adding layers | biscarri | OpenFOAM Meshing & Mesh Conversion | 13 | March 21, 2020 12:40 |
[snappyHexMesh] No layers from snappyHexMesh | aerospacious | OpenFOAM Meshing & Mesh Conversion | 2 | June 25, 2018 05:36 |
[snappyHexMesh] Triangular elements in boundary layers generated by snappyHexMesh | mike.franky | OpenFOAM Meshing & Mesh Conversion | 0 | June 3, 2018 09:46 |
[snappyHexMesh] Problems meshing an impeller with snappyHexMesh | kandelabr | OpenFOAM Meshing & Mesh Conversion | 13 | June 9, 2017 06:18 |
[snappyHexMesh] SHM Problems with snapping and layers | Rojj | OpenFOAM Meshing & Mesh Conversion | 0 | April 14, 2016 13:52 |