StratifiedTextures.java [src/soils/utils] Revision: default Date:
/*
* $Id$
*
* This file is part of the Cloud Services Integration Platform (CSIP),
* a Model-as-a-Service framework, API, and application suite.
*
* 2012-2017, OMSLab, Colorado State University.
*
* OMSLab licenses this file to you under the MIT license.
* See the LICENSE file in the project root for more information.
*/
package soils.utils;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author Joseph Levin <a href="joelevin@weru.ksu.edu">EMails</a>
*/
public class StratifiedTextures {
public static enum textures {
C, CL, COS, COSL, FS, FSL, L, LCOS, LFS, LS, LVFS, S, SC, SCL, SI, SIC, SICL, SIL, SL, VFS, VFSL
};
private static StratifiedTextures instance;
Map<String, double[]> c_values = new HashMap<>();
/**
*
* @return
*/
public synchronized static StratifiedTextures getInstance() {
if (instance == null) {
instance = new StratifiedTextures();
}
return instance;
}
private StratifiedTextures() {
c_values.put("C", new double[]{0.22, 0.13, 0.23, 0.55});
c_values.put("CL", new double[]{0.33, 0.18, 0.33, 0.34});
c_values.put("COS", new double[]{0.92, 0.3, 0.04, 0.04});
c_values.put("COSL", new double[]{0.65, 0.25, 0.25, 0.1});
c_values.put("FS", new double[]{0.92, 0.4, 0.04, 0.04});
c_values.put("FSL", new double[]{0.65, 0.25, 0.25, 0.1});
c_values.put("L", new double[]{0.41, 0.17, 0.41, 0.18});
c_values.put("LCOS", new double[]{0.84, 0.25, 0.1, 0.06});
c_values.put("LFS", new double[]{0.84, 0.45, 0.1, 0.06});
c_values.put("LS", new double[]{0.84, 0.35, 0.1, 0.06});
c_values.put("LVFS", new double[]{0.84, 0.55, 0.1, 0.06});
c_values.put("S", new double[]{0.92, 0.35, 0.04, 0.04});
c_values.put("SC", new double[]{0.53, 0.2, 0.41, 0.06});
c_values.put("SCL", new double[]{0.59, 0.22, 0.14, 0.27});
c_values.put("SI", new double[]{0.04, 0.02, 0.88, 0.08});
c_values.put("SIC", new double[]{0.06, 0.04, 0.48, 0.46});
c_values.put("SICL", new double[]{0.1, 0.07, 0.55, 0.35});
c_values.put("SIL", new double[]{0.2, 0.1, 0.6, 0.2});
c_values.put("SL", new double[]{0.65, 0.2, 0.25, 0.1});
c_values.put("VFS", new double[]{0.92, 0.6, 0.04, 0.04});
c_values.put("VFSL", new double[]{0.65, 0.35, 0.25, 0.1});
}
/**
*
* @return
*/
public String[] textures() {
return c_values.keySet().toArray(new String[c_values.size()]);
}
/**
*
* @param texture
* @return
*/
public boolean isTextureValid(String texture) {
return c_values.containsKey(texture.toUpperCase());
}
protected double getValue(String texture, int i) {
if (i < c_values.size()) {
double[] values = c_values.get(texture.toUpperCase());
if (values != null) {
return values[i];
}
}
return Double.NaN;
}
/**
*
* @param texture
* @return
*/
public double getSand(String texture) {
return getValue(texture, 0);
}
/**
*
* @param texture
* @return
*/
public double getVeryFineSand(String texture) {
return getValue(texture, 1);
}
/**
*
* @param texture
* @return
*/
public double getSilt(String texture) {
return getValue(texture, 2);
}
/**
*
* @param texture
* @return
*/
public double getClay(String texture) {
return getValue(texture, 3);
}
}