All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.fudaa.dodico.telemac.TelemacDicoFileFormatVersion Maven / Gradle / Ivy

The newest version!
/**
 * @creation 29 sept. 2003
 * @modification $Date: 2007-06-29 15:10:29 $
 * @license GNU General Public License 2
 * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
 * @mail [email protected]
 */
package org.fudaa.dodico.telemac;

import java.util.Set;

import org.fudaa.ctulu.CtuluLibString;
import org.fudaa.ctulu.fileformat.FileFormat;
import org.fudaa.ctulu.fileformat.FileFormatVersionInterface;
import org.fudaa.dodico.dico.DicoCasFileFormat;
import org.fudaa.dodico.dico.DicoEntite;
import org.fudaa.dodico.dico.DicoModelAbstract;
import org.fudaa.dodico.dico.DicoParamsInterface;
import org.fudaa.dodico.ef.io.serafin.SerafinFileFormat;
import org.fudaa.dodico.fichiers.FileFormatSoftware;
import org.fudaa.dodico.h2d.telemac.H2dTelemacDicoFileFormatVersion;
import org.fudaa.dodico.h2d.telemac.H2dTelemacDicoParams;
import org.fudaa.dodico.telemac.io.TelemacCLFileFormat;
import org.fudaa.dodico.telemac.io.TelemacCLVersion;
import org.fudaa.dodico.telemac.io.TelemacLiquideFileFormat;

/**
 * @author deniger
 * @version $Id: TelemacDicoFileFormatVersion.java,v 1.20 2007-06-29 15:10:29 deniger Exp $
 */
public class TelemacDicoFileFormatVersion extends H2dTelemacDicoFileFormatVersion {

  protected DicoEntite clEntite_;

  protected DicoEntite gridEntite_;

  /**
   * @param _ft
   * @param _dico
   */
  public TelemacDicoFileFormatVersion(final DicoCasFileFormat _ft, final DicoModelAbstract _dico) {
    super(_ft, _dico);
    getCLEntiteFile();
    getMaillageEntiteFile();
    if (clEntite_ != null) {
      clEntite_.setRequired(true);
    }
    if (gridEntite_ != null && (!_ft.getID().toLowerCase().equals(H2dTelemacDicoParams.getWaqtelId()))) {
      gridEntite_.setRequired(true);
    }
  }

  public boolean isGridRequired() {
    return !getDicoFileFormat().getID().toLowerCase().equals(H2dTelemacDicoParams.getWaqtelId());
  }

  @Override
  public void fillListWithNotSetRequiredEntite(final DicoParamsInterface _i, final Set _l) {
    if ((clEntite_ != null) && clEntite_.isRequired() && (!_i.isValueSetFor(clEntite_))) {
      _l.add(clEntite_);
    }
    if (isGridRequired()) {
      if ((gridEntite_ != null) && (!_i.isValueSetFor(gridEntite_))) {
        _l.add(gridEntite_);
      }
    }
    final DicoEntite res = getEntiteFor("FICHIER DES RESULTATS", "RESULTS FILE");
    if (res != null && !_i.isValueSetFor(res)) {
      _l.add(res);
    }
  }

  @Override
  public String getBottomKey() {
    return SerafinFileFormat.getVariableFond(getDico().getLanguageIndex());
  }

  @Override
  public DicoEntite getCLEntiteFile() {
    if (clEntite_ == null) {
      clEntite_ = getEntiteFor(new String[]{"FICHIER DES CONDITIONS AUX LIMITES", "BOUNDARY CONDITIONS FILE"});
    }
    return clEntite_;
  }

  @Override
  public DicoEntite getCLLiquideEntiteFile() {
    return getEntiteFor(new String[]{"FICHIER DES FRONTIERES LIQUIDES", "LIQUID BOUNDARIES FILE"});
  }

  @Override
  public FileFormatVersionInterface getDefaultSerafinFormat() {
    return SerafinFileFormat.getInstance();
  }

  /**
   * @param _s le nom du code
   * @return la version a utiliser pour lire le fichier de conditions limites
   */
  public TelemacCLVersion getDefaultTelemacCLFormat(final String _s) {
    return (TelemacCLVersion) TelemacCLFileFormat.getInstance().getLastVersionInstanceForSystem(_s);
  }

  /**
   * @return la version a utiliser pour lire les courbes transitoire
   */
  public TelemacLiquideFileFormat getDefaultTelemacLiquideFormat() {
    return TelemacLiquideFileFormat.getInstance();
  }

  /**
   * @return le format parent
   */
  public DicoCasFileFormat getDicoFileFormat() {
    return (DicoCasFileFormat) super.getFileFormat();
  }


  /**
   *
   */
  @Override
  public DicoEntite getDureeDuCalcul() {
    return getEntiteFor(new String[]{"DUREE DU CALCUL", "DURATION"});
  }

  /**
   * @param _ent le mot-cl?
   * @return le format correspondant ou null si aucune
   */
  public FileFormat getFileFormat(final DicoEntite _ent) {
    if (_ent == null) {
      return null;
    }
    // entite du fichier cas
    if (_ent.equalsEntite(getMaillageEntiteFile())) {
      return SerafinFileFormat.getInstance();
    } else if (_ent.equalsEntite(getCLEntiteFile())) {
      return TelemacCLFileFormat.getInstance();
    } else if (_ent.equalsEntite(getCLLiquideEntiteFile())) {
      return TelemacLiquideFileFormat.getInstance();
    }
    return null;
  }

  /**
   * @return le mot-cl? decrivant le fichier de fond
   */
  public DicoEntite getFONDEntiteFile() {
    return getEntiteFor(new String[]{"FICHIER DES FONDS", "BOTTOM TOPOGRAPHY FILE"});
  }

  @Override
  public DicoEntite getLiquidBoundaryOption() {
    return getEntiteFor(new String[]{"OPTION POUR LES FRONTIERES LIQUIDES", "OPTION FOR LIQUID BOUNDARIES"});
  }

  @Override
  public DicoEntite getMaillageEntiteFile() {
    if (gridEntite_ == null) {
      gridEntite_ = getEntiteFor(new String[]{"FICHIER DE GEOMETRIE", "GEOMETRY FILE"});
    }
    return gridEntite_;
  }

  @Override
  public DicoEntite getNbPasTemps() {
    return getEntiteFor(new String[]{"NOMBRE DE PAS DE TEMPS", "NUMBER OF TIME STEPS"});
  }

  @Override
  public DicoEntite getPasTemps() {
    return getEntiteFor(new String[]{"PAS DE TEMPS", "TIME STEP"});
  }

  @Override
  public DicoEntite getPrescribedElevation() {
    return getEntiteFor(new String[]{"COTES IMPOSEES", "PRESCRIBED ELEVATIONS"});
  }

  @Override
  public DicoEntite getPrescribedFlowrate() {
    return getEntiteFor(new String[]{"DEBITS IMPOSES", "PRESCRIBED FLOWRATES"});
  }

  @Override
  public DicoEntite getPrescribedTracer() {
    return getEntiteFor(new String[]{"VALEURS IMPOSEES DES TRACEURS", "PRESCRIBED TRACERS VALUES"});
  }

  /**
   *
   */
  @Override
  public DicoEntite getPrescribedVelocity() {
    return getEntiteFor(new String[]{"VITESSES IMPOSEES", "PRESCRIBED VELOCITIES"});
  }

  /**
   * @return le mot-cl? a utiliser pour activer la reprise de calcul
   */
  @Override
  public DicoEntite getRepriseBooleanKeyword() {
    return getEntiteFor(getRepriseBooleanName());
  }

  @Override
  public DicoEntite getRepriseFileKeyword() {
    return getEntiteFor(getRepriseFileName());
  }

  @Override
  public DicoEntite getSeuilSiphonFile() {
    return getEntiteFor(new String[]{"FICHIER DE DONNEES FORMATE 1", "FORMATTED DATA FILE 1"});
  }

  /**
   * @return le mot-cle definissant le nombre de seuils.
   */
  public DicoEntite getSiphonNombreMotCle() {
    return getEntiteFor(new String[]{"NOMBRE DE SIPHONS", "NUMBER OF CULVERTS"});
  }

  @Override
  public FileFormatSoftware getSoftVersion() {
    final FileFormatSoftware r = new FileFormatSoftware(FileFormatSoftware.TELEMAC_IS);
    r.soft_ = getCodeName();
    r.language_ = super.getDico().getLanguage();
    r.version_ = getDico().getVersion();
    return r;
  }

  @Override
  public String[] getVariableFond() {
    return SerafinFileFormat.getInstance().getVariableFond();
  }

  @Override
  public DicoEntite getVelocityProfils() {
    return getEntiteFor(new String[]{"PROFILS DE VITESSE", "VELOCITY PROFILES"});
  }

  @Override
  public boolean isFlowrateComputeFromElevation(final String _v) {
    return CtuluLibString.QUATRE.equals(_v);
  }

  @Override
  public boolean isFlowrateComputeFromVelocities(final String _v) {
    return CtuluLibString.DEUX.equals(_v);
  }

  @Override
  public boolean isFlowrateComputeFromVelocityU(final String _v) {
    return CtuluLibString.TROIS.equals(_v);
  }

  @Override
  public boolean isSiphonAvailable() {
    return TelemacDicoManager.isTelemac2d((DicoCasFileFormat) getFileFormat());
  }

  @Override
  public boolean isStbtel() {
    return TelemacDicoManager.isStbtel(getDicoFileFormat());
  }

  @Override
  public boolean isTelemac2d() {
    return TelemacDicoManager.isTelemac2d(getDicoFileFormat());
  }

  @Override
  public boolean isTelemac3d() {
    return TelemacDicoManager.isTelemac3d(getDicoFileFormat());
  }

  /**
   * @return true si les courbes transitoires sont support?es par ce modele
   */
  @Override
  public boolean isTransientAvailable() {
    DicoCasFileFormat fileFormat = (DicoCasFileFormat) getFileFormat();
    return TelemacDicoManager.isTelemac2d(fileFormat) || TelemacDicoManager.isTelemac3d(fileFormat);
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy