text:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package fluxoemredes;

import horizonte.IntervaloDeHorizonte;
import java.io.IOException;
import java.util.ArrayList;
import simulacao.CarregarSistema;
import simulacao.SimulacaoOperacaoEnergeticaPSO;

/**
 *
 * @author Wellington
 */
public class FluxoEmRede {

    int numUsinas;
    int numIntervalos;
    private CarregarSistema carregar = new CarregarSistema();
    private SimulacaoOperacaoEnergeticaPSO simulacaoHidroeletrica;
    double[][] rede;
    double[] volumeMin;
    double[] volumeMax;
    double[] vazaoMin;
    double[] vazaoMax;
    double[][] direcaoDeCaminhada;
    double[][] matrizPassosMaximos; //mudei o nome desta variável
    int[][] MIVB;
    ArrayList<Arco> arcosBasicos;
    ArrayList<Arco> superBasicos;
    ArrayList<Ciclo> ciclos;

    int[] usinasJusante;
    double passoMaximo;  //mudei o nome desta variável

    /**
     *
     * Construtor responsável por inicializar todas as variáveis do fluxo em rede e da simulação para o cálculo da geração hidráulica.
     *
     * @param numUsinas quantidade de usinas do teste
     * @param numIntervalos número de intervalos do horizonte de planejamento
     * @param rede partícula do PSO com os volumes e as vazões defluências de cada usina e cada horizonte de planejamento
     * @param Volumemin limite mínimo dos volumes de cada usina
     * @param Volumemax limite máximo dos volumes de cada usina
     * @param vazaoMin limite mínimo da vazão defluente de cada usina
     * @param vazaoMax limite máximo da vazão defluente de cada usina
     * @param demanda demanda do sistema em cada intervalo do horizonte de planejamento
     *
     *
     **/
    public FluxoEmRede(int numUsinas, int numIntervalos, double[][] rede, double[] Volumemin, double[] Volumemax, double[] vazaoMin, double[] vazaoMax, double demanda) {
        this.numUsinas = numUsinas;
        this.numIntervalos = numIntervalos;
        this.rede = rede;
        this.volumeMin = Volumemin;
        this.volumeMax = Volumemax;
        this.vazaoMin = vazaoMin;
        this.vazaoMax = vazaoMax;
        this.arcosBasicos = new ArrayList();
        this.superBasicos = new ArrayList();
        this.ciclos = new ArrayList();
        this.MIVB = new int[numUsinas][numIntervalos];
        this.simulacaoHidroeletrica = new SimulacaoOperacaoEnergeticaPSO(numIntervalos, demanda);

        // tenta carregar os dados das usinas do teste
        try {
            carregar.UsinasMinas(simulacaoHidroeletrica);
            inicializaLimitesVolumeVazao(simulacaoHidroeletrica);
        } catch (IOException e) {
            // caso n carregue exibe uma msg e o erro
            System.out.println("erro ao carregar o sistema hidroeletrico\n" + e);
        }

        // identificar quem são as usinas a jusante de cada usina do caso teste
        usinasJusante = new int[numUsinas];
        for (int i = 0; i < numUsinas; i++) {
            //indice 0 porque estamos trabalhando com apenas uma usina a jusante)
            if (i < numUsinas - 1) {
                usinasJusante[i] = simulacaoHidroeletrica.getSistemaHidroeletrico().getUsinas().get(i).getUsinaAJusante().get(0).getCodigo();
            } else {
                // informando que chegou ao sumidouro
                usinasJusante[i] = i + 1;
            }
        }
    }

    /**
     *
     * Método que define os limites máximo dos volumes operativos e das vazões defluentes de cada usina do horizonte de planejamento.
     *
     * @param simulacao variável que possui todos os dados do caso teste, como usinas, volumes máximo e mínimos de cada usina, entre outros.
     *
     */
    private void inicializaLimitesVolumeVazao(SimulacaoOperacaoEnergeticaPSO simulacao) {
        for (int i = 0; i < numUsinas; i++) {
            volumeMax[i] = simulacao.getNos()[0][i].getLimiteMaximoVolume();
            volumeMin[i] = simulacao.getNos()[0][i].getLimiteMinimoVolume();
            vazaoMin[i] = simulacao.getNos()[0][i].getLimiteMinimoVazaoDefluente();
            vazaoMax[i] = simulacao.getNos()[0][i].getLimiteMaximoVazaoDefluente();
        }
    }

    /**
     *
     * Método utilizado para a detecção de ciclos decorrentes da inserção de um arco superbásico na base.
     * Após a inserção de um arco superbásico há a formação de um ciclo.
     * O método varre a lista de arcos superbásicos e procura os ciclos formados por eles, add-os em uma lista de ciclos
     *
     */
    public void detectarCiclos() {
        ciclos.clear();
        for (int i = 0; i < superBasicos.size(); i++) {
            Ciclo ciclo = new Ciclo(superBasicos.get(i));
            ciclos.add(ciclo);
            ciclos.get(i).trilhaDestinoOrigem(MIVB, usinasJusante);
        }
    }

    /**
     * Estratégia de partição de arcos baseada na Função de Produção Hidráulica.
     * Estratégia que sugere que o conjunto de arcos básicos seja constituído pelos volumes, sempre que possível.
     * Logo o conjunto de arcos básicos deve ser o conjunto dos volumes armazenados no reservatório,
     * e assim deve permanecer até que um de seus limites de capacidade impeçam essa partição.
     * Assim, se um arco de volume (i,t) estiver "dentro" do intervalo aberto de seus limites,
     * este arco estará na base  e MIVB (i,t) = 0. Caso contrário, MIVB(i, t) = 1. Entretanto,
     * se na(s) iteração(ões) seguinte(s) a variável correspondente ao volume abandonar seu limite,
     * a defluência deixa automaticamente a base para a volta do volume.
     *
     **/
    public void ParticaoEPAFPH() {
        Arco arcobasico;
        arcosBasicos.clear();
        superBasicos.clear();

        for (int i = 0; i < MIVB.length; i++) {
            for (int j = 0; j < MIVB[0].length; j++) {
                /*  se o nó da rede estiver em um de seus limites de volume,
                    o valor correspondente ao nó na MIVB será 1, caso contrário seu valor será 0 */
                if ((rede[i][j] == volumeMin[i]) || (rede[i][j] == volumeMax[i])) {
                    MIVB[i][j] = 1;
                    arcobasico = new Arco(i, j, usinasJusante[i], j);
                    arcosBasicos.add(arcobasico);
                } else {
                    MIVB[i][j] = 0;
                    arcobasico = new Arco(i, j, i, (j + 1));
                    arcosBasicos.add(arcobasico);
                }
            }
        }
    }

    /**
     *
     * Método que implementa a Estratégia de Partição de Arcos - Transferência
     * de Energia entre Cascata. Permite a transferência de grandes blocos de
     * energia desde que os reservatórios de acumulação envolvidos tenham
     * capacidade para tal. Nesta estratégia, identificam-se os intervalos de
     * maior e menor custo marginal da operação, a fim de possibilitar a
     * transferência de um grande bloco de energia entre estes intervalos. Para
     * isso, declaram - se as defluências das usinas da cascata do intervalo mais
     * a direita como variáveis básicas, enquanto que, todos os arcos de volume
     * das usinas que não atingiram seus limites também devem pertencer ao
     * conjunto de variáveis básicas. Os arcos super básicos são os arcos de
     * defluência das usinas do intervalo mais à esquerda, a fim de fechar o
     * ciclo entre os dois intervalos.
     *
     */
    public void ParticaoEPATEC() {
        for (int i = 0; i < numIntervalos; i++) {
            simulacaoHidroeletrica.definirVolumesFinais(rede, numUsinas, numIntervalos);
            simulacaoHidroeletrica.definirVazoesDefluentes(rede, numUsinas, numIntervalos);
            simulacaoHidroeletrica.simularOperacaoEnergeticaPSO(numIntervalos);
            ArrayList<IntervaloDeHorizonte> IntervalosHorizonte = simulacaoHidroeletrica.getHorizontePlanejamento().getIntervalos();

            superBasicos.clear();
            int menor = i;
            int maior = IntervaloDiferencaCustoMarginal(i, IntervalosHorizonte);
            Arco arcobasico;

            for (int usina = 0; usina < numUsinas; usina++) {
                //colocando as defluencias do intervalo maior como variáveis básicas
                if (rede[usina][maior + numIntervalos] != vazaoMin[usina]) {
                    arcobasico = new Arco(usina, maior, usinasJusante[usina], maior);
                    arcosBasicos.add(arcobasico);
                    MIVB[usina][maior] = 1;
                } else {
                    arcobasico = new Arco(usina, maior, usina, (maior + 1));
                    arcosBasicos.add(arcobasico);
                    MIVB[usina][maior] = 0;
                }

                //colocando as defluencias do intervalo menor como superbasicas
                if ((rede[usina][menor] != volumeMax[usina]) && (rede[usina][menor] != volumeMin[usina])) {
                    superBasicos.add(new Arco(usina, menor, usinasJusante[usina], menor));
                } else {
                    superBasicos.add(new Arco(usina, menor, usina, menor + 1));
                }

                //colocando se possivel os volumes ao longo do intervalo menor e maior
                for (int k = menor; k < maior; k++) {
                    if (rede[usina][k] == volumeMax[usina] || rede[usina][k] == volumeMin[usina]) {
                        //defluencia
                        MIVB[usina][k] = 1;
                        arcosBasicos.add(new Arco(usina, k, usinasJusante[usina], k));
                    } else {
                        //volume
                        arcosBasicos.add(new Arco(usina, k, usina, k + 1));
                        MIVB[usina][k] = 0;
                    }

                }
            }
            detectarCiclos();
            DirecaoDeCaminhadaArcosSuperBasicos();
            ProjecaoDeCaminhadaArcosSuperBasicos();
            DirecaoDeCaminhadaArcosBasicos();
            //PassoMaximoBasicoSuperBasico();
            PassoMaximoDoCiclo();
            Atualizar();
        }
    }

    /**
     *
     * Método que implementa a Estratégia de Partição de Arcos
     * baseada na Transferência de energia entre usinas. Ela propõe que se verifique
     * a curva de custo marginal da operação do sistema, declare como básica a defluência
     * que possibilite a maior transferência de energia de um intervalo do planejamento
     * para outro intervalo, de uma determinada usina.
     *
     */
    public void ParticaoEPATEU() {
        //arcosBasicos.clear();
        for (int intervaloUsina = 0; intervaloUsina < numIntervalos; intervaloUsina++) {
            for (int usina = 0; usina < numUsinas; usina++) {
                simulacaoHidroeletrica.definirVolumesFinais(rede, numUsinas, numIntervalos);
                simulacaoHidroeletrica.definirVazoesDefluentes(rede, numUsinas, numIntervalos);
                simulacaoHidroeletrica.simularOperacaoEnergeticaPSO(numIntervalos);
                ArrayList<IntervaloDeHorizonte> IntervalosHorizonte = simulacaoHidroeletrica.getHorizontePlanejamento().getIntervalos();
                superBasicos.clear();
                Arco arcobasico;
                int menor = intervaloUsina;
                int maior = IntervaloDiferencaCustoMarginal(intervaloUsina, IntervalosHorizonte);

                //colocando as defluências do intervalo maior como variáveis básicas
                if (rede[usina][maior + numIntervalos] != vazaoMin[usina]) {
                    arcobasico = new Arco(usina, maior, usinasJusante[usina], maior);
                    arcosBasicos.add(arcobasico);
                    MIVB[usina][maior] = 1;
                } else {
                    arcobasico = new Arco(usina, maior, usina, (maior + 1));
                    arcosBasicos.add(arcobasico);
                    MIVB[usina][maior] = 0;
                }

                //colocando se possivel a defluência do intervalo menor como superbásicas
                if ((rede[usina][menor] != volumeMax[usina]) && (rede[usina][menor] != volumeMin[usina])) {
                    superBasicos.add(new Arco(usina, menor, usinasJusante[usina], menor));
                } else {
                    superBasicos.add(new Arco(usina, menor, usina, menor + 1));
                }

                //colocando se possivel os volumes ao longo do intervalo menor e maior
                for (int k = menor; k < maior; k++) {
                    if (rede[usina][k] == volumeMax[usina] || rede[usina][k] == volumeMin[usina]) {
                        //defluencia
                        MIVB[usina][k] = 1;
                        arcosBasicos.add(new Arco(usina, k, usinasJusante[usina], k));
                    } else {
                        //volume
                        arcosBasicos.add(new Arco(usina, k, usina, k + 1));
                        MIVB[usina][k] = 0;
                    }
                }

                detectarCiclos();
                DirecaoDeCaminhadaArcosSuperBasicos();
                ProjecaoDeCaminhadaArcosSuperBasicos();
                DirecaoDeCaminhadaArcosBasicos();
                //PassoMaximoBasicoSuperBasico();
                PassoMaximoDoCiclo();
                Atualizar();
            }
        }
    }

    private int IntervaloDiferencaCustoMarginal(int intervalo, ArrayList<IntervaloDeHorizonte> intervalos) {
        int indice = 0;
        double maiorDiferenca = Double.MIN_VALUE;
        double custoIntervaloAtual = intervalos.get(intervalo).getGeracaoComplementar();
        for (int i = intervalo + 1; i < numIntervalos; i++) {
            double diferencaiIntervaloAtual = Math.abs(intervalos.get(i).getGeracaoComplementar() - custoIntervaloAtual);
            if (diferencaiIntervaloAtual > maiorDiferenca) {
                indice = i;
                maiorDiferenca = diferencaiIntervaloAtual;
            }
        }
        return indice;
    }

    public void DirecaoDeCaminhadaArcosSuperBasicos() {
        direcaoDeCaminhada = new double[numUsinas][numIntervalos * 2];

    }

    public void ProjecaoDeCaminhadaArcosSuperBasicos() {
        for (int i = 0; i < superBasicos.size(); i++) {
            int indiceUsina = superBasicos.get(i).getOrigem()[0];
            int indiceIntervalo = superBasicos.get(i).getOrigem()[1];
            //caso o arco superbasico sera de volume
            if (MIVB[indiceUsina][indiceIntervalo] == 1) {
                if ((rede[indiceUsina][indiceIntervalo] == volumeMax[indiceUsina]) && (direcaoDeCaminhada[indiceUsina][indiceIntervalo] > 0)) {
                    direcaoDeCaminhada[indiceUsina][indiceIntervalo] = 0;
                } else if ((rede[indiceUsina][indiceIntervalo] == volumeMin[indiceUsina]) && (direcaoDeCaminhada[indiceUsina][indiceIntervalo] < 0)) {
                    direcaoDeCaminhada[indiceUsina][indiceIntervalo] = 0;
                }
            } else if ((rede[indiceUsina][numIntervalos + indiceIntervalo] == vazaoMax[indiceUsina]) && (direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] > 0)) {
                direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] = 0;
            } else if ((rede[indiceUsina][numIntervalos + indiceIntervalo] == vazaoMin[indiceUsina]) && (direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] < 0)) {
                direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] = 0;
            }
        }
    }

    public void DirecaoDeCaminhadaArcosBasicos() {
        double fatorConversaoVAVO = 1000000.0 / 2628000.0;
        double direcaoSuperBasico;
        for (int i = 0; i < arcosBasicos.size(); i++) {
            int indiceUsina = arcosBasicos.get(i).getOrigem()[0];
            int indiceIntervalo = arcosBasicos.get(i).getOrigem()[1];
            for (int j = 0; j < ciclos.size(); j++) {
                int SinalDeConcordanciaDoArcoSB = 1;
                boolean pertence = false;
                //caso em que o arco basico esta na trilha de destino
                if (VerificarTrilhaDeDestino(arcosBasicos.get(i), ciclos.get(j))) {
                    pertence = true;
                } else if (VerificarTrilhaDeOrigem(arcosBasicos.get(i), ciclos.get(j))) {
                    pertence = true;
                    SinalDeConcordanciaDoArcoSB = -1;
                }
                if (pertence) {
                    int indiceUsinaSB = ciclos.get(j).getSuperbasico().getOrigem()[0];
                    int indiceIntervaloSB = ciclos.get(j).getSuperbasico().getOrigem()[1];
                    //verificando se o arco basico é de defluencia
                    if (MIVB[indiceUsina][indiceIntervalo] == 1) {
                        //verificando se o arco superbasico é de montante
                        if (MIVB[indiceUsinaSB][indiceIntervaloSB] == 1) {
                            //direcaoSuperBasico = (SinalDeConcordanciaDoArcoSB * direcaoDeCaminhada[indiceUsinaSB][indiceIntervaloSB]*fatorConversaoVAVO);
                            direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] = direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] + (SinalDeConcordanciaDoArcoSB * direcaoDeCaminhada[indiceUsinaSB][indiceIntervaloSB]);
                        } else {
                            direcaoSuperBasico = (SinalDeConcordanciaDoArcoSB * direcaoDeCaminhada[indiceUsinaSB][indiceIntervaloSB + numIntervalos] * fatorConversaoVAVO);
                            direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] = direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] + direcaoSuperBasico;
                        }
                    } else //verificando se o arco superbasico é de montante
                    if (MIVB[indiceUsinaSB][indiceIntervaloSB] == 1) {
                        direcaoDeCaminhada[indiceUsina][indiceIntervalo] = direcaoDeCaminhada[indiceUsina][indiceIntervalo] + SinalDeConcordanciaDoArcoSB * direcaoDeCaminhada[indiceUsinaSB][indiceIntervaloSB];
                    } else {
                        direcaoSuperBasico = (SinalDeConcordanciaDoArcoSB * direcaoDeCaminhada[indiceUsinaSB][numIntervalos + indiceIntervaloSB]) * fatorConversaoVAVO;
                        direcaoDeCaminhada[indiceUsina][indiceIntervalo] = direcaoDeCaminhada[indiceUsina][indiceIntervalo] + direcaoSuperBasico;
                    }
                }

            }
        }

    }

    private boolean VerificarTrilhaDeOrigem(Arco arco, Ciclo ciclo) {
        for (int i = 0; i < ciclo.getTrilhaorigem().size(); i++) {
            Arco arcobasico = ciclo.getTrilhaorigem().get(i);
            if ((arco.getOrigem()[0] == arcobasico.getOrigem()[0]) && (arco.getOrigem()[1] == arcobasico.getOrigem()[1])
                    && (arco.getDestino()[0] == arcobasico.getDestino()[0]) && (arco.getDestino()[1] == arcobasico.getDestino()[1])) {
                return true;
            }
        }
        return false;
    }

    private boolean VerificarTrilhaDeDestino(Arco arco, Ciclo ciclo) {
        for (int i = 0; i < ciclo.getTrilhadestino().size(); i++) {
            Arco arcobasico = ciclo.getTrilhadestino().get(i);
            if ((arco.getOrigem()[0] == arcobasico.getOrigem()[0]) && (arco.getOrigem()[1] == arcobasico.getOrigem()[1])
                    && (arco.getDestino()[0] == arcobasico.getDestino()[0]) && (arco.getDestino()[1] == arcobasico.getDestino()[1])) {
                return true;
            }
        }
        return false;
    }

    public void PassoMaximoDoCiclo() {
        PassoMaximoBasicoSuperBasico();
        double menor = Double.MAX_VALUE;
        for (int i = 0; i < superBasicos.size(); i++) {
            int indiceUsinaSB = superBasicos.get(i).getOrigem()[0];
            int indiceIntervaloSB = superBasicos.get(i).getOrigem()[1];
            if (MIVB[indiceUsinaSB][indiceIntervaloSB] == 1) {
                if ((matrizPassosMaximos[indiceUsinaSB][indiceIntervaloSB] < menor) && (matrizPassosMaximos[indiceUsinaSB][indiceIntervaloSB] != 0)) {
                    menor = matrizPassosMaximos[indiceUsinaSB][indiceIntervaloSB];
                }
            } else if ((matrizPassosMaximos[indiceUsinaSB][indiceIntervaloSB + numIntervalos] < menor) && (matrizPassosMaximos[indiceUsinaSB][indiceIntervaloSB + numIntervalos] != 0)) {
                menor = matrizPassosMaximos[indiceUsinaSB][indiceIntervaloSB + numIntervalos];
            }
        }

        for (int i = 0; i < arcosBasicos.size(); i++) {
            int indiceUsinaBA = arcosBasicos.get(i).getOrigem()[0];
            int indiceIntervaloBA = arcosBasicos.get(i).getOrigem()[1];
            if (MIVB[indiceUsinaBA][indiceIntervaloBA] == 1) {
                if ((matrizPassosMaximos[indiceUsinaBA][indiceIntervaloBA] < menor) && (matrizPassosMaximos[indiceUsinaBA][indiceIntervaloBA] != 0)) {
                    menor = matrizPassosMaximos[indiceUsinaBA][indiceIntervaloBA];
                }
            } else if ((matrizPassosMaximos[indiceUsinaBA][indiceIntervaloBA + numIntervalos] < menor) && (matrizPassosMaximos[indiceUsinaBA][indiceIntervaloBA + numIntervalos] != 0)) {
                menor = matrizPassosMaximos[indiceUsinaBA][indiceIntervaloBA + numIntervalos];
            }
        }
        passoMaximo = menor;
//        for (int i = 0; i < ciclos.size(); i++) {
//            double menor;
//            int indiceUsinaSB = ciclos.get(i).getSuperbasico().getOrigem()[0];
//            int indiceIntervaloSB = ciclos.get(i).getSuperbasico().getOrigem()[1];
//            if (MIVB[indiceUsinaSB][indiceIntervaloSB] == 1) {
//                menor = matrizPassosMaximos[indiceUsinaSB][indiceIntervaloSB];
//            } else {
//                menor = matrizPassosMaximos[indiceUsinaSB][numIntervalos + indiceIntervaloSB];
//            }
//            for (int j = 0; j < ciclos.get(i).getArestasbasicas().size(); j++) {
//                int indiceUsina = ciclos.get(i).getArestasbasicas().get(j).getOrigem()[0];
//                int indiceIntervalo = ciclos.get(i).getArestasbasicas().get(j).getOrigem()[1];
//                if (MIVB[indiceUsina][indiceIntervalo] == 1) {
//                    if (menor < matrizPassosMaximos[indiceUsina][numIntervalos + indiceIntervalo]) {
//                        menor = matrizPassosMaximos[indiceUsina][numIntervalos + indiceIntervalo];
//                    }
//                } else if (menor < matrizPassosMaximos[indiceUsina][indiceIntervalo]) {
//                    menor = matrizPassosMaximos[indiceUsina][indiceIntervalo];
//                }
//            }
//
//            ciclos.get(i).setPassoMaximo(menor);
//        }
    }

    private void PassoMaximoBasicoSuperBasico() {
        //calculando o passo maximo dos arcos superbasicos
        for (int i = 0; i < superBasicos.size(); i++) {
            int indiceUsina = superBasicos.get(i).getOrigem()[0];
            int indiceIntervalo = superBasicos.get(i).getOrigem()[1];
            //caso o superbasico seja volume
            if (MIVB[indiceUsina][indiceIntervalo] == 1) {
                if (direcaoDeCaminhada[indiceUsina][indiceIntervalo] < 0) {
                    matrizPassosMaximos[indiceUsina][indiceIntervalo] = (volumeMin[indiceUsina] - rede[indiceUsina][indiceIntervalo]) / direcaoDeCaminhada[indiceUsina][indiceIntervalo];
                } else if (direcaoDeCaminhada[indiceUsina][indiceIntervalo] > 0) {
                    matrizPassosMaximos[indiceUsina][indiceIntervalo] = (volumeMax[indiceUsina] - rede[indiceUsina][indiceIntervalo]) / direcaoDeCaminhada[indiceUsina][indiceIntervalo];
                }
            } else if (direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] < 0) {
                matrizPassosMaximos[indiceUsina][numIntervalos + indiceIntervalo] = (vazaoMin[indiceUsina] - rede[indiceUsina][numIntervalos + indiceIntervalo]) / direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo];
            } else if (direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] > 0) {
                matrizPassosMaximos[indiceUsina][numIntervalos + indiceIntervalo] = (vazaoMax[indiceUsina] - rede[indiceUsina][numIntervalos + indiceIntervalo]) / direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo];
            }
        }

        for (int i = 0; i < ciclos.size(); i++) {
            for (int j = 0; j < ciclos.get(i).getArestasbasicas().size(); j++) {
                Arco arcobasico = ciclos.get(i).getArestasbasicas().get(j);
                int indiceUsina = arcobasico.getOrigem()[0];
                int indiceIntervalo = arcobasico.getOrigem()[1];
                //caso em que o arco basico é defluencia
                if (MIVB[indiceUsina][indiceIntervalo] == 1) {
                    //verificando se o passo maximo do arco basico ja foi calculado
                    if (matrizPassosMaximos[indiceUsina][numIntervalos + indiceIntervalo] != 0) {
                        if (direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] < 0) {
                            matrizPassosMaximos[indiceUsina][numIntervalos + indiceIntervalo] = vazaoMin[indiceUsina] - rede[indiceUsina][numIntervalos + indiceIntervalo];
                        } else if (direcaoDeCaminhada[indiceUsina][numIntervalos + indiceIntervalo] > 0) {
                            matrizPassosMaximos[indiceUsina][numIntervalos + indiceIntervalo] = vazaoMax[indiceUsina] - rede[indiceUsina][numIntervalos + indiceIntervalo];

                        }
                    }
                } else//caso em que o arco basico é montante
                //verificando se o passo maximo do arco basico ja foi calculado
                {
                    if (matrizPassosMaximos[indiceUsina][indiceIntervalo] != 0) {
                        if (direcaoDeCaminhada[indiceUsina][indiceIntervalo] < 0) {
                            matrizPassosMaximos[indiceUsina][indiceIntervalo] = volumeMin[indiceUsina] - rede[indiceUsina][indiceIntervalo];
                        } else if (direcaoDeCaminhada[indiceUsina][indiceIntervalo] > 0) {
                            matrizPassosMaximos[indiceUsina][indiceIntervalo] = volumeMax[indiceUsina] - rede[indiceUsina][indiceIntervalo];

                        }
                    }
                }
            }
        }

    }

    public void Atualizar() {

        for (int i = 0; i < rede.length; i++) {
            for (int j = 0; j < rede[0].length; j++) {
                rede[i][j] = rede[i][j] + direcaoDeCaminhada[i][j];
            }

        }
    }
}

redpajama_set_name: RedPajamaGithub


SpaceX's Falcon 9 rocket sent a telecommunications satellite into orbit today for Luxembourg's government and the SES satellite venture, setting the stage for next week's maiden launch of SpaceX's Falcon Heavy rocket.
The GovSat-1 spacecraft is the first component in a NATO satellite constellation that's designed to provide secure communications for tactical operations, maritime missions or over areas affected by humanitarian crises. It was built by Orbital ATK, with anti-jamming and encryption systems, and is meant exclusively for governmental and institutional security applications.
GovSat-1 is built to be in operation for 15 years.
Today's launch from Cape Canaveral Air Force Station in Florida had been originally scheduled for Tuesday, but it was delayed 24 hours to give SpaceX time to replace a sensor on the Falcon 9's second stage.
The rocket lifted off at 4:25 p.m. ET (1:25 p.m. PT) and lofted GovSat-1 into a geostationary transfer orbit.
Once the satellite reaches its final orbit, 22,000 miles above Earth, it will support communications within Europe, the Middle East and Africa, and enable operations over the Atlantic Ocean, the Indian Ocean, the Mediterranean and the Baltic Sea.
SpaceX typically programs its first-stage booster to fly itself back to a landing after stage separation. For example, the first stage that was used today had been recovered and refurbished after a launch last May. However, because of today's mission requirements, SpaceX let the booster fall into the Atlantic.
"It's weirder to consider that we're not actually recovering this one," said launch commentator Michael Hammersley, an engineer at SpaceX's headquarters in Hawthorne, Calif.
It got even weirder: After the launch, SpaceX CEO Elon Musk reported in a tweet that the booster tested a procedure for a "very high retrothrust landing in water," involving a three-engine blast so violent that it might have done damage to an oceangoing landing ship.
SpaceX has big plans for its next launch — the first test flight of its Falcon Heavy rocket, which combines three Falcon 9 cores with a total of 27 Merlin engines for liftoff thrust of 5.1 million pounds.
In terms of payload-to-orbit capacity, the Falcon Heavy will be the most powerful launch vehicle to take flight since the Saturn V moon rocket.
Components of the Falcon Heavy have been undergoing testing for months, and a key test came last week when the fully assembled rocket fired all of its rockets at once during a launch-pad test at Launch Complex 39A at NASA's Kennedy Space Center.
That test cleared the way for SpaceX to schedule a Feb. 6 liftoff from Launch Complex 39A at NASA's Kennedy Space Center. The practice flight is due to send an unconventional payload — SpaceX founder Elon Musk's red Tesla Roadster sports car — on a widely looping trajectory that goes as far out as the orbit of Mars.
The flight plan calls for two of the first-stage cores to fly themselves back to a Florida landing zone after they've done their job, and for the center core to touch down on an oceangoing drone ship.
Musk has said "there's a real good chance" that the Falcon Heavy won't make it to orbit on the first try, which is why he chose a relatively expendable (and relatively silly) payload for the first test flight.
Once the Falcon Heavy passes all its tests, it will be put to work launching large satellites, or combinations of satellites. Eventually, the rocket could send payloads toward the moon and Mars.
SpaceX is working on an even bigger launch vehicle, known as the BFR or Big Falcon Rocket, which could carry scores of settlers to Mars.


Bread knife, bone knife, carving knife, or cheese knife - there is a great variety of knives. The storing of knives is crucial to any kind of knife: Our wooden knife block made from solid nut wood protects the blades of your high-quality knives!
A heavy sheet of stainless steel makes for a safe stand. The combination of nut wood and stainless steel creates a great focal point in your kitchen! A correct way of storing knives is essential not only for safety reasons but also to preserve the blades. Rubber nubs attached to the bottom of the product protect your kitchen surface.
A space for a sharpening steel (16mm x 12mm) is optional.


In 2012, Thomas Gardner and Salomé Voegelin hosted a colloquium, entitled Music - Sound Art: Historical Continuum and Mimetic Fissures, at the London College of Communication, University of the Arts London. This colloquium dealt with the current fervent debate concerning the relationship between sound art and music.
The participants were: Simon Emmerson, Allen S. Weiss, Cathy Lane, Volkmar Klien, Leigh Landy, Claudia Molitor, Aura Satz, Angus Carlyle, Nye Parry, John Wynne, Peter Cusack, John Drever, Robert Worby, Michael Young, Anna Gritz, David Toop, Kathy Hinde, Seth Ayyez, Stephen Preston, Ed Baxter, Justin Yang, Helen Frosi, Max Eastley and Salomé Voegelin and Thomas Gardner.
This book proposes the opening of the colloquium to a wider readership through the publication of a decisive range of the material that defined the event. This includes the pre-prepared 'provocations' that initiated the three parts of the proceedings; transcriptions of the debates as they ensued on the day, documenting the challenging, rich and at times argumentative discussion that ensued; and six responses produced after the event to reflect on the transcribed material and respond to specific points elaborated on the day.


Bhopal : January 23, 2019 (Muslim Saleem): The Chief Minister Shri Kamal Nath has said that it has become necessary to expand India's economy after making it all-inclusive by solving problem of unemployment and economic problems of the farmers. He said that Madhya Pradesh will be made a model of inclusive economy.
Addressing the session on the subject 'emerging market' on the second day of annual conclave of the World Economic Forum at Davos today, the Chief Minister said that India has joined the race to become world's second largest economy but it has many challenges ahead. He said that unemployment is the biggest problem of today. It is also a challenge to make farmers' economic condition strong. The Chief Minister said that it is must to address these issues urgently first to exploit India's economic growth potential.
Addressing further, Shri Kamal Nath said that constant focus on environmental issues while taking up sustainable economic development is a must. He underlined that growing disparity in the society has also come up as a major issue. This can be addressed by ensuring justice to all. He mentioned that this is not a problem of India but a problem of all other countries too. This needs global attention and solution. He said that the issues of farmers in India are different than other countries' farmers and hence solutions cannot be the same.
Shri Kamal Nath said that rule based trade system is must for the growth of world trade.


Have your job posting viewed by thousand of Medical Device professionals.
Post jobs free when signing up for resume database!
Gain access to active and passive candidates open to new Medical Device career opportunities.
Over 650,000 life sciences resumes!
Email your jobs to a giant list of targeted candidates.
MyDeviceCareer.com Copyright 2019. All rights reserved.


text:
Sensitization-based risk for substance abuse in vulnerable individuals with ADHD: Review and re-examination of evidence
Iliyan Ivanov, James M Bjork, James Blair, Jeffrey H Newcorn
Evidence of sensitization following stimulants administration in humans is just emerging, which prevents reaching more definitive conclusions in favor or against a purported protective role of stimulant treatments for ADHD for the development of substance use disorders. Existing evidence from both animal and human research suggest that stimulants produce neurophysiological changes in the brain reward system, some of which could be persistent. This could be relevant in choosing optimal treatments for young patients with ADHD who have additional clinical risk factors for substance abuse (e.g. conduct disorder (CD) and/or familial addictions). Here we stipulate that, while the majority of youth with ADHD greatly benefit from treatments with stimulants, there might be a subpopulation of individuals whose neurobiological profiles may confer risk for heightened vulnerability to the effects of stimulants on the responsiveness of the brain reward system. We propose that focused human research is needed to elucidate the unknown effects of prolonged stimulant exposure on the neurophysiology of the brain reward system in young patients with ADHD.
Neuroscience and Biobehavioral Reviews
https://doi.org/10.1016/j.neubiorev.2022.104575
Udgivet - apr. 2022
10.1016/j.neubiorev.2022.104575
Dyk ned i forskningsemnerne om 'Sensitization-based risk for substance abuse in vulnerable individuals with ADHD: Review and re-examination of evidence'. Sammen danner de et unikt fingeraftryk.
Reward Medicin og biovidenskab 100%
Substance-Related Disorders Medicin og biovidenskab 91%
Brain Medicin og biovidenskab 50%
Conduct Disorder Medicin og biovidenskab 44%
Neurophysiology Medicin og biovidenskab 43%
Therapeutics Medicin og biovidenskab 16%
Ivanov, I., Bjork, J. M., Blair, J., & Newcorn, J. H. (2022). Sensitization-based risk for substance abuse in vulnerable individuals with ADHD: Review and re-examination of evidence. Neuroscience and Biobehavioral Reviews, 135, 104575. [104575]. https://doi.org/10.1016/j.neubiorev.2022.104575
Sensitization-based risk for substance abuse in vulnerable individuals with ADHD : Review and re-examination of evidence. / Ivanov, Iliyan; Bjork, James M; Blair, James et al.
I: Neuroscience and Biobehavioral Reviews, Bind 135, 104575, 04.2022, s. 104575.
Ivanov, I, Bjork, JM, Blair, J & Newcorn, JH 2022, 'Sensitization-based risk for substance abuse in vulnerable individuals with ADHD: Review and re-examination of evidence', Neuroscience and Biobehavioral Reviews, bind 135, 104575, s. 104575. https://doi.org/10.1016/j.neubiorev.2022.104575
Ivanov I, Bjork JM, Blair J, Newcorn JH. Sensitization-based risk for substance abuse in vulnerable individuals with ADHD: Review and re-examination of evidence. Neuroscience and Biobehavioral Reviews. 2022 apr.;135:104575. 104575. https://doi.org/10.1016/j.neubiorev.2022.104575
Ivanov, Iliyan ; Bjork, James M ; Blair, James et al. / Sensitization-based risk for substance abuse in vulnerable individuals with ADHD : Review and re-examination of evidence. I: Neuroscience and Biobehavioral Reviews. 2022 ; Bind 135. s. 104575.
@article{7e502e4efaf743c2bb805dd774e9acd8,
title = "Sensitization-based risk for substance abuse in vulnerable individuals with ADHD: Review and re-examination of evidence",
abstract = "Evidence of sensitization following stimulants administration in humans is just emerging, which prevents reaching more definitive conclusions in favor or against a purported protective role of stimulant treatments for ADHD for the development of substance use disorders. Existing evidence from both animal and human research suggest that stimulants produce neurophysiological changes in the brain reward system, some of which could be persistent. This could be relevant in choosing optimal treatments for young patients with ADHD who have additional clinical risk factors for substance abuse (e.g. conduct disorder (CD) and/or familial addictions). Here we stipulate that, while the majority of youth with ADHD greatly benefit from treatments with stimulants, there might be a subpopulation of individuals whose neurobiological profiles may confer risk for heightened vulnerability to the effects of stimulants on the responsiveness of the brain reward system. We propose that focused human research is needed to elucidate the unknown effects of prolonged stimulant exposure on the neurophysiology of the brain reward system in young patients with ADHD.",
author = "Iliyan Ivanov and Bjork, {James M} and James Blair and Newcorn, {Jeffrey H}",
note = "Copyright {\textcopyright} 2022 Elsevier Ltd. All rights reserved.",
doi = "10.1016/j.neubiorev.2022.104575",
journal = "Neuroscience & Biobehavioral Reviews",
publisher = "Pergamon",
T1 - Sensitization-based risk for substance abuse in vulnerable individuals with ADHD
T2 - Review and re-examination of evidence
AU - Ivanov, Iliyan
AU - Bjork, James M
AU - Blair, James
AU - Newcorn, Jeffrey H
N1 - Copyright © 2022 Elsevier Ltd. All rights reserved.
N2 - Evidence of sensitization following stimulants administration in humans is just emerging, which prevents reaching more definitive conclusions in favor or against a purported protective role of stimulant treatments for ADHD for the development of substance use disorders. Existing evidence from both animal and human research suggest that stimulants produce neurophysiological changes in the brain reward system, some of which could be persistent. This could be relevant in choosing optimal treatments for young patients with ADHD who have additional clinical risk factors for substance abuse (e.g. conduct disorder (CD) and/or familial addictions). Here we stipulate that, while the majority of youth with ADHD greatly benefit from treatments with stimulants, there might be a subpopulation of individuals whose neurobiological profiles may confer risk for heightened vulnerability to the effects of stimulants on the responsiveness of the brain reward system. We propose that focused human research is needed to elucidate the unknown effects of prolonged stimulant exposure on the neurophysiology of the brain reward system in young patients with ADHD.
AB - Evidence of sensitization following stimulants administration in humans is just emerging, which prevents reaching more definitive conclusions in favor or against a purported protective role of stimulant treatments for ADHD for the development of substance use disorders. Existing evidence from both animal and human research suggest that stimulants produce neurophysiological changes in the brain reward system, some of which could be persistent. This could be relevant in choosing optimal treatments for young patients with ADHD who have additional clinical risk factors for substance abuse (e.g. conduct disorder (CD) and/or familial addictions). Here we stipulate that, while the majority of youth with ADHD greatly benefit from treatments with stimulants, there might be a subpopulation of individuals whose neurobiological profiles may confer risk for heightened vulnerability to the effects of stimulants on the responsiveness of the brain reward system. We propose that focused human research is needed to elucidate the unknown effects of prolonged stimulant exposure on the neurophysiology of the brain reward system in young patients with ADHD.
U2 - 10.1016/j.neubiorev.2022.104575
DO - 10.1016/j.neubiorev.2022.104575
M3 - Review
JO - Neuroscience & Biobehavioral Reviews
JF - Neuroscience & Biobehavioral Reviews

redpajama_set_name: RedPajamaCommonCrawl


text:
RETRO: Some of Sebring's legendary winners...
The iconic Ford GT-40 Mk I chassis P1075 that won the coveted 24 Heurs du Mans twice. Also saw JW Automotive Engineering win the 1969 12 Hours of Sebring in one of its sister cars. (Image source: gt40.net)
As think it's 'Ol Vukie II who sez' Nobody ever Asked for a Car's autograph...
Continuing thou trip down Brumos lane; Err "34R" on Ye 'Ol Cement Mixer formerly known as Hendrix Army Air Field... After having left off with the late James Dean, who was reportedly an aspiring auto racing driver who wanted to race at Indianapolis...
Thars' another legendous' actor who actually contested the 12 Hours of Sebring, for which Y'all may have heard his name? As it's none other than the man who made an epic movie 'bout Circuit de la Sarthe.
Steve McQueen: The Man and Le Mans
As he just so happens to be the man who so incensed Mario Andretti, who simply couldn't stomach the thought of some GAWD DAMN Actor Beating him at Sebring, which I've recounted several times before here on No Fenders, including Wayback in;
But that was in 1970, and I'm getting ahead of Thyself, especially since I didn't celebrate Mario & Bruce Mclaren's victory just over a half century ago. When the Duo won aboard Shelby American's Ford GT-40 Mk IV in 1967.
As these cars, for which Dan Gurney & A.J. Foyt subsequently won that year's 24 Heurs du Mans aboard, were also known as the "J-Cars," in deference to the Rules Appendix they were designed for. As remarkably, one of these Uber rare chassis has just come up for auction.
Jam Master J-12: Ford GT40 Mark IV Heading to Auction in Florida
As once upon a time, the Daytona 24 Hours, 12 Hours of Sebring and Le Mans were part of the yearly World SportsCar Championship, for which it's a shame that they're No longer together...
While probably one of the rarest GT-40's of all, Ford's X-1 GT-40 Roadster inexplicably won the '66 event, a race that Dan Gurney and Jerry Grant should have won. Yet Gurney was Disqualified from finishing in second place for pushing his stricken GT-40 Mk II across the finish line! Handing victory over to Ken Miles and Lloyd Ruby. As it should have been Gurney's second Sebring win.
Then FoMoco' won its third and final 12 Hours of Sebring with its venerable GT-40 when the Wily John Wyer dusted off some of Ford's original Mark I's and refined them to meet the FIA's latest rule changes for 1968's World SportsCar Championship, intended to stop Ford from winning in France with its Nasty Big Block seven litre 427cid V-8's.
As history denotes that Ford GT-40 Mk I Chassis No. 1075 became the first chassis to win the venerable Le Mans 24hrs race twice consecutively, albeit with different drivers, including Jacky Ickx, who was the original "Monsieur Le Mans!"
As Ickx has won not only Le Mans six times, but also Sebring twice, beginning in 1969 with Jacky Oliver, aboard a Ford GT-40. Before winning again in '72 with Mario Andretti for la Scuderia, nee Ferrari.
As Ickx & Andretti swept both of Florida's endurance events, beginning with that year's Daytona Six Hours race and Sebring. Along with the Watkins Glens Six Hours race, notching a "Three Peat" aboard that year's World SportsCar Championship Manufacturer's champion's Dunlop tyres shod Ferrari 312PB.
Yet Dan Gurney, remember him, Eh? Paired with Chuck Daigh, Phil Hill and Olivier Gendebien did win the 1959 race aboard one of Scuderia Ferrari's three Works Ferrari 250 TR 59's.
As the car was initially entered for Gurney & Daigh, but after the factory's winning tandem of Hill & Gendebien's car retired, Ferrari opted to add them to this entry in order to ensure they won that year's event.
And another of the famous 1950's winning Marques is making a comeback. As the iconic Jaguar D-Type won in '55. But it wasn't a Works effort, instead a customer car entered by one of America's biggest Sports Cars names of the early 1950's.
as Briggs Cunningham, whose own chassis won the 1953 event outright, scored Jaguar's lone Sebring victory with Mike Hawthorn and Phil Walters behind the keyboard of those iconic D-Type's, for which Jaguar's now producing a limited continuation run of 25 units.
Jaguar revives iconic D-Type. Plans to produce 25 additional units
And although I don't think the great Jimmy Clark ever raced at Sebring? I was unawares' that he'd raced for Aston Martin "Back-in-The-Day." As ironically one of the main contenders Gurney & Co. beat in '59 was the lone factory Aston Martin DBR1, entered for Carroll Shelby and Roy Salvadori, as this was during 'Ol Shel's driving days.
Aston Martin DB4 crashed by Jim Clark goes to Auction
As Y'all can catch this year's 66th running of the classic Mobil 1 12 Hours of Sebring this Saturday, March 17th on (Fox Sports( FS-1, beginning at 7:30A m Pacific. When the Caddy's will be gunning to claim their second consecutive Overall victory, ahead of those Pesky Acura's...
Sebring 12 Hours Broadcast Schedule finalized
Labels: Auctions, Chassis, Features, Gossip, History, Hollywood, IMSA, Le Mans, Media, Movies, Numbers, People, Racecars, Racing Drivers, Sports Cars, Trivia, TV, WSC, WTSCC
Disney Smudges some Magic Dust Blush upon Face of...
F1: Liberty Media's "New & Improved" Formula 1 TV ...
F1:2018 Season Kicks Off Down Under'
IMS Museum Now even More Desperate for HOF Inductees
INDY 500: More Driver/Team Combos' Announced
AUTOS: Thoughts of Art Cars and Cuts 'O Meat Colli...
AUTOS: Porsche's, Jaguars and Old Men...
IndyCar Driver Trio returning to Le Mans in 2018
INDY 500: Conor Daly lands Dale Coyne's third conf...
IndyCar Drivers Floridian Holiday...
INDYCAR: 2018 Season Tech Tidbits
It's Almost Time for Indy Cars to race...
Before the Indy Cars comes Indy Lights...
INDYCAR: 2018 Rookie Class - Full Season Contendahs'
INDYCAR: 2018 Rookie Class - Partial Season Drives...
INDYCAR: 2018 Rookie Class - Partial Season Driver...
Carey says U.S. Fans Must Change...
When TV Announcers Matter!


text:
I thought you might be interested in this item at http://fuller.worldcat.org/oclc/934706179 Title: Acts of the Apostles : interpretation, history and theology Author: Osvaldo Padilla Publisher: Downers Grove, Illinois : IVP Academic, an imprint of InterVarsity Press, [2016] ©2016 ISBN/ISSN: 9780830899807 0830899804 OCLC:934706179
Bible. -- Acts -- Criticism, interpretation, etc.
RELIGION -- Biblical Studies -- Jesus, the Gospels & Acts.
RELIGION -- Biblical Studies -- New Testament.
Acts of the Apostles : interpretation, history and theology
Osvaldo Padilla
Downers Grove, Illinois : IVP Academic, an imprint of InterVarsity Press, [2016] ©2016
The book of Acts is a remarkable fusion of the historical and theological, and its account of the early church has fascinated theologians and biblical scholars for centuries. Just who was the author of this work? And what kind of book did he write? How do we classify its genre?The Acts of the Apostles provides an advanced introduction to the study of Acts, covering important questions about authorship, genre, history and theology. Osvaldo Padilla explores fresh avenues of understanding by examining the text in light of the most recent research on the book of Acts itself, philosophical hermeneutics, genre theory and historiography. In addition, Padilla opens a conversation between the text of Acts and postliberal theology, seeking a fully-orbed engagement with Acts that is equally attuned to questions of interpretation, history and theology. Read more...
You are not connected to the Fuller Libraries network. Access to online content and services may require you to authenticate with your library. Remote Access Login
Padilla, Osvaldo.
Acts of the Apostles.
Downers Grove : InterVarsity Press, 2016
Find more information about: Osvaldo Padilla
Who wrote Acts? --
The genre of Acts --
How Luke writes history --
The speeches in Acts (part one): the speeches in their ancient context --
The speeches in Acts (part two): the theology of the speeches --
The justification of truth-claims in Acts: a conversation with postliberalism.
Osvaldo Padilla.
The book of Acts is a remarkable fusion of the historical and theological, and its account of the early church has fascinated theologians and biblical scholars for centuries. Just who was the author of this work? And what kind of book did he write? How do we classify its genre?The Acts of the Apostles provides an advanced introduction to the study of Acts, covering important questions about authorship, genre, history and theology. Osvaldo Padilla explores fresh avenues of understanding by examining the text in light of the most recent research on the book of Acts itself, philosophical hermeneutics, genre theory and historiography. In addition, Padilla opens a conversation between the text of Acts and postliberal theology, seeking a fully-orbed engagement with Acts that is equally attuned to questions of interpretation, history and theology.
Add tags for "Acts of the Apostles : interpretation, history and theology". Be the first.
Bible. -- Acts.


text:
Disaster Recovery & Business Continuity Plan
Educational Reports
About CRTG
Request Your FREE Network Assessment!
877-MACS-911
Big Changes Coming To Apple Devices
Posted by Mersad On July 2, 2016
A number of big, exciting developments were announced at Apple's recent worldwide developer's conference, and from the sound of it, there are a number of really exciting changes coming that will give the Apple community plenty to look forward to. Below, we'll outline the biggest and best of the announcements.
The developer beta is already available, with development ongoing, and the public beta is scheduled to be released in July. The new OS is slated to feature upgrades that will touch just about every major Apple system, including Maps, Siri, Photos, and iMessages, as well as including a new Home App that will allow you to control all of your HomeKit devices from a single console.
In tandem with the release of iOS10 comes the next generation of the Mac OS, which will include many of the same upgrades and features you'll see in iOS10, plus a few extras you're sure to love, like better integration of Siri and Apple Pay, and picture-in-picture features similar to what you currently enjoy on your iPad.
The biggest limitation of the current Apple Watch is speed. Simply put, it's not very fast. The new OS upgrade seeks to address this by including things like an instant app launcher and background refresh, as well as adding a host of new features and a variety of new apps designed to make the Apple Watch more fun, accessible, and interactive.
Not to be left out of the pack, tvOS is getting a big upgrade, with the most significant feature-add being the inclusion of a single sign-in, allowing you to enter your cable subscription information once, and having it auto replicate across all apps, rather than having to manually enter it for each app you're running.
In addition to OS-related news, there were also a number of smaller announcement, the most noteworthy of which is the fact that Siri is about to be opened up to third-party apps, which will increase her functionality enormously. If you are an Apple user, there is a lot to look forward to!
Want to stay on top of the latest IT updates?
Sign up for our Security Tip Of The Week and we'll give you short, relevant IT security tips, reminders, and strategies to lower your risk of getting compromised and keep you up-to-date with the latest news!
I agree I am an Artificial Being
Capital One Data Breach Puts Millions At Risk
New Apple Update Available for Character Bug Solution
Devices Attached To Corporate Networks Are Being Targeted
Old Drivers Could Cause WiFi Issues After Windows 10 Update
Facebook Is Adding New Features, Including Dating
Creative Resources Technology Group
3555 Harbor Gateway South, Suite B
8333 East Foothill Blvd.
8880 Rio San Diego Dr.
Email: contact@creativeresources.net
Tech Tip Sign-up
© Copyright 2021 Creative Resources Technology Group


text:
HMD Global estimated to have sold around 16 million Nokia phones in Q3 2017
Corbin Davenport
9:15am PST Dec 22, 2017
HMD Global was founded just over a year ago, and in that short time, it has used the Nokia brand to sell a wide variety of phones. The company's lineup ranges from the high-end Nokia 8 to feature phones like the new Nokia 3310. Counterpoint Research, an analyst firm, estimates that HMD sold 13.5 million feature phones and 2.8 million smartphones during Q3 2017.
The growth places HMD at the #3 feature phone manufacturer worldwide, and #16 for worldwide smartphone sales. By comparison, HMD only sold 1.5 million smartphones in the first half of 2017, according to analyst firm IDC. The massive spike in sales can likely be attributed to additional models coming out (like the Nokia 2 and 8), as well as a continually-expanding presence worldwide.
HMD has not offered any official sales numbers since it was founded, so these estimates are all we have to go by. Other analysts report Q3 sales as high as 3.4 million.
Nokia Power User
'Geometry Dash SubZero' is the latest stand-alone expansion for RobTop Games' Geometry Dash series
Kick off the holiday weekend with 20 temporarily free and 95 on-sale apps


text:
Home Entertainment 'One Punch Man Season 3' Release Date, Cast, Plot And What You...
'One Punch Man Season 3' Release Date, Cast, Plot And What You Should Know As A Fan?
One Punch Man is another Japanese anime that is popular between the viewers. Based on a manga adaptation, the series has a rating of 8.8 out 10. Yusuke Murata illustrates the manga. The series, with a total of two seasons, is expected to release a season 3 soon. The season one of the one punch man was released on October 4, 2015, and ended on July 16, 2016, with 12 episodes. It was later followed by season two, which aired on April 9, 2019, till January 11, 2020, with 12 episodes again. Because of the high popularity the anime and manga received, in 2019, a game was released. A movie based on the series is also on its way to be produced.
Release Date and trailer of One Punch Man Season 3
There is no official news regarding season 3. But we are pretty sure that, due to high viewers and fan base, we can expect a season 3 on the way. Season two took two years to release after season 1. Hence we can expect season 3 by the end of this year or by 2021. Anime's at least take a minimum of two to three years for the renewal of a new season. However, we do feel that the ongoing pandemic might have influenced the season 3 production to delay.
There is no trailer released as of now, but we will keep you informed.
The cast of Season 3
Saitama(Makoto Furukawa), is a protagonist of the series who is known to defeat others with a single punch. Some of the other voice actors include Kaito Ishikawa, Aoi Yūki, Kazuhiro Yamaji, Kenjiro Tsuda, Minami Takayama, and Tesshō Genda.
The plot of Season 3
The story revolves around Saitama, who is known to have immense power to defeat others using a single punch. He soon meets Genos, who considers Saitama as one of the best heroes he has ever seen. Genos persuades Saitama to join the Hero Association, where his powers can come to use. Hence after joining the association, Saitama crosses paths with several heroes and monsters who he defeats.
Previous article'Shadowhunters' Season 4: Release date, plot, cast- Katherine McNamara, Alberto Rosende etc. Is this season really renewed or cancelled ? Click here for detailed updates!
Next article'PUBG Mobile Lite Season 12': Release Date, New Changes and Update Details!
Chicago Rapper FGB Duck SHOT AND KILLED On Instagram!! (Graphic Video)
August 5, 2020 9:43 am EDT
Dr. Anthony Fauci Replies To Trump's Accusations Of Making Mistakes Says 'I Was Never Wrong'
July 30, 2020 5:51 am EDT
At Least Regal Has A Sense Of Humor About New Mutants Getting Delayed 4 Times
Ahmaud Arbery Case: Suspect Called District Attorney For 'Advice' At The Scene Of Shooting
NASA to launch satellite to track rising sea levels


text:
<?php

	/*EDIT THE QUERY BELOW TO MEET THE TABLE NEEDS */

	$pk = $_POST['pk'];
    $name = $_POST['name'];
    $value = $_POST['value'];

    if(!empty($value)) {

		include 'secure/connectstring.php';
		$queryeditable = "update tb_user_info set " . mysql_escape_string($name) . "='" . mysql_escape_string($value). "' where user_id = '" . mysql_escape_string($pk) . "'";
        mysql_query($queryeditable) or die(mysql_error());

        //here, for debug reason we just return dump of $_POST, you will see result in browser console
        print_r($queryeditable);

    } else {
        /*
        In case of incorrect value or error you should return HTTP status != 200.
        Response body will be shown as error message in editable form.
        */

        header('HTTP 400 Bad Request', true, 400);
        echo "This field is required!";
    }

?>


Stade de la Beaujoire | FC Nantes Atlantique Stadium.
Stade de la Beaujoire Capacity and Stadium Guide.
Stade de la Beaujoire is a football stadium located in the city/town of Nantes in France, Europe. Stade de la Beaujoire has a maximum stadium capacity of 38285 spectators. FC Nantes Atlantique are the main occupants of the stadium. FC Nantes Atlantique play their domestic home football fixtures at Stade de la Beaujoire in the Ligue 1 football competition.


text:
Online ExclusivesEmerging as a Leader in Utility Locating with Versatile Technology
Emerging as a Leader in Utility Locating with Versatile Technology
Learn how California contractor, C Below, has advanced its abilities with Envirosight equipment
This content is sponsored by Envirosight. Sponsored content is authorized by the client and does not necessarily reflect the views of COLE Publishing. View our privacy policy.
Envirosight LLC Pipeline Inspection, Surveying and Mapping Inspection System
Southern California-based utility locating company, C Below, has made a name for itself in the industry by investing in the tools to do each job efficiently and meticulously.
It's even helped them land work with some large private companies, including Disneyland.
"From the very beginning we've prioritized finding technology that will work best to locate as many utilities as possible," says CEO Chris Loera. "That constantly sets us apart from our competitors because we'll find the majority, if not all, of the utilities on site where our competitors don't have as much success."
Addressing customer needs
Since opening in 2009, C Below has built up a fleet of equipment to provide its clients with all of the information they're looking for underground. Those investments include three ROVVER X inspection crawlers and a SAT lateral launch crawler from Envirosight — all of which the crews use for utility locating.
"When we first started, one of our biggest challenges was locating large sewer lines and lateral lines where there wasn't access to the clean-outs," Loera says. "Our customers were routinely having challenges with this as well, so we knew we needed equipment to meet the demands. We also specialize in vacuum excavation and cities typically won't come out and mark their sewers or storm drains or lateral lines for residential services, so when our clients are looking for that information, we deploy the crawlers to locate them beforehand."
Trustworthy, capable equipment
The Envirosight crawlers have proven to be a big step up from the technology the company was using before.
"We were previously using crawlers from a different manufacturer and we had tons of problems," Loera says. "The tracker was always broken or water would get into it, cables were breaking all the time, etc., so we were looking for something different."
Loera reached out to Envirosight's sales partner in Southern California, Haaker Equipment Company, and decided to try out the ROVVER X.
"It's night and day," Loera says. "It's been great. We could tell the difference in quality right away."
A breakthrough in production
The equipment has boosted the crew's productivity for several reasons, Loera says.
"The crawler is a lot faster than the other units we were using so there's been a definite increase in the amount of line we can cover per minute, but also simply not having all of the issues and the downtime has really helped our production," he says. "Previously, we were constantly having to pull the units out, clean them and try to troubleshoot and figure out what's going wrong with them."
Outfitting themselves with the latest equipment has also helped C Below stand out in an area they receive a lot of locating requests: laterals.
"A lot of people don't know there's specific technology out there like the SAT lateral launch crawlers," he says. "They don't realize it's available. So when we tell them that we can actually locate laterals with only sewer main access, we go out there and look like rockstars. They've been looking for this utility for so long and they haven't been able to find it and we find it within a couple minutes. That happens quite a bit."
Far-reaching services
C Below services all of Southern California as well as into central and northern California, and has even traveled out of state for opportunities, including to Wyoming for an oil field project.
"We'll go wherever we're needed and we locate every type of utility: electrical lines, gas lines, water lines, sewer and storm drains, communication lines," Loera says. "From there, we put marks on the ground. We have survey teams that come out and pick up our marks, gathering that information for our clients. Then we'll do vacuum excavation where we'll dig a little pilot hole down to the utility to confirm the type of utility, the size and the depth."
The company's clients include architects and engineers, consultants, construction managers, contractors, jurisdictions, and large private corporations. The crews have also undertaken major projects for the Port of San Diego and the Los Angeles County Detention Center.
"We work for anybody and everybody," Loera says. "We take on jobs all across the board."
Growing with confidence
With 60 employees and crews deployed to jobs across the state, having local support for their Envirosight equipment has helped the company do more with confidence, knowing downtime is no longer a concern, Loera says.
"We have a lot of different equipment and so we work with a lot of different people, but Haaker has really stood out to us as a vendor," he says. "They've been great to work with and are just around the corner if we ever need support."
Learn more about the versatile ROVVER X inspection crawler with a free on-site demo:
Visit the Envirosight Storefront
The Clean Streets of Carolina
Operating at a Higher Level
Product News: Feb. 10, 2016


text:
Rockford's Independent Newspaper
The Rock River Times - Rockford's Independent Newspaper
City of Rockford announces partnership with economic network
By Jim Hagerty On Jan 3, 2018
ROCKFORD — The City of Rockford will partner with an organization leaders say will help them make several economic improvements over the next several years, aldermen approved Tuesday.
The agreement is with the National Resource Network. It aims at assisting Rockford in developing a seven-year financial plan, which will focus on improving the city's fiscal sustainability and economic competitiveness. Work on the plan is expected to be complete by September.
The city has also announced the adoption of a long-term financial planning policy to provide several benefits to the city and taxpayers, including service and tax stability, as well as better prioritization of resources. The policy will be applied to the city's main operating funds and will be presented as part of the annual budget process. It will help identify known changes in revenues and expenditures and develop a plan for eliminating budget shortfalls in the future.
"While no municipality wants to face a budget crisis, it is an unfortunate reality in today's economic climate," Mayor Tom McNamara said in a release. "We know that if we aren't financially stable, we won't be able to be a good partner to our current businesses and those we want to attract."
McNamara said the National Resource Network has a proven track record working on municipal operations, funding and budgeting that will be beneficial this year and in years to come.
In addition to a budget deficit of $10 million for 2018, based on projections, Rockford could be facing a cumulative deficit of $62 million over the next five years.
The city was one of 58 cities that applied for the partnership last year. Rockford met several of the network's eligibility criteria, including population decline, poverty rates, and annual average unemployment rates.
National Resource Network officials said Rockford was also approved because leaders demonstrate readiness and willingness to support a long-range plan.
"We are excited to be partnering with the City of Rockford to provide technical assistance and develop a multi-year financial plan that addresses the city's unique challenges," National Resource Network Executive Director David Eichenthal said. "The city's leadership is ready to take the steps needed to achieve fiscal sustainability, and we look forward to working with Mayor Tom McNamara and the City of Rockford."
The network's work in Rockford will focus on several key components, including the formation of an advisory committee to review the baseline for financial analysis, and the review of expenditure drivers to identify opportunities to reinvest savings to align with targeted community goals such as enhanced housing stock, reduced crime, and community and economic development.
After the work is complete, officials say the city will have a seven-year financial and management plan and a series of policy changes that will help the city achieve the sustainability necessary to meet goals set by aldermen and the community.
Total cost of the partnership is $400,000. The city will invest $100,000. The remaining 75 percent will be paid by the National Resource Network through a $4 million grant from the Laura and John Arnold Foundation (LJAF).
Since its launch in 2014, the network has partnered with 50 cities in 22 states.
Through its partnership with the network, Providence, Rhode Island, adopted a 10-year financial plan to balance budgets and provide for key investments, while better integrating governmental departments. The network also worked with the city to bring community stakeholders into the process, including colleges and universities, business organizations, nonprofits, and foundations. The network helped adopt similar plans in Flint, Michigan; Kansas City, Kansas; and Waco, Texas.
The National Resource Network is a core component of the Obama Administration's Strong Cities, Strong Communities initiative. R.
Victims of fatal Rock County crash identified
Listen. Packers' McCarthy addresses coaching staff changes
More than 1,000 expected to attend free Thanksgiving dinner at Court Street United…
RAM presents Art in Bloom, November 3-6 and Fashion in Bloom, November 5
Burpee Museum Celebrates National Fossil Day
Chevy Chase Live at The Coronado Performing Arts Center
Your Horoscope – January 25, 2023
This week's edition – January 25, 2023
The Rock River Times is the Rockford region's independent newspaper.
• Email: contact@rockrivertimes.com
About The Rock River Times
© 2023 - The Rock River Times. All Rights Reserved.


Interior Features Inviting Landscape Welcomes You Into This Charming 1 Bedroom Home Perfect For The Down Sizer Or Great Starter Home. The 1 Bedroom Can Be Made Into 2 Small Br's. This Cozy Home Also Has An Enclosed Porch Great For A Office, Sitting Area Or Additional Sleeping Quarters. Large Living Rm/Dining Area, & Full Bth W/Tub. Eat In Kitchen W/Country Flair. 200 Ft Deep Bck Yard!


A participant in an interbank funds transfer system (IFTS) which is responsible to the settlement agent (or to all other direct participants) for the settlement of its own payments, those of its customers, and those of the indirect participants on whose behalf it is settling.
Direct participants hold reserves accounts for this purpose at the central bank.
This page was last modified on 15 August 2016, at 10:10.


text:
About Fact Chek
Non-Partisanship Policy
Sponsored Content Policy
#HelpingTrueHeroes
SMB Story
#BeEnergyIndependent
1,900 Villages In Karnataka Facing Drought; Water Scarcity Is Slowly Crippling The State
Shraddha Goled
Editor : Shraddha Goled
Image Credit: Bhaskar Hindi
Image Credit: Bhaskar Hindi
The recent news of two frogs being married in Udupi, Karnataka to appease the rain gods might have amused a lot of us. As much as it tells about the superstition, it also points to the desperation of the villagers with respect to water scarcity in the country.
On June 8, a man in Bengaluru set a camp outside the city local civic body Bruhat Bengaluru Mahanagara Palike's (BBMP) office in RG Halli. About 60 houses in his lane were not given water connection. Despite multiple requests, the issue was not paid heed to, forcing Srinivas M to take this step. He decided to end his strike on June 10, after the officials assured him an action. This is both an example of negligence of authority as well as that of water shortage pushing people to take measures like these.
This. This is what a citizen has finally had to do, to get attention from BBMP & BWSSB for water connection.
Srinivas slept last night, fully set up with the mosquito net. Been promised action in 3 days. Else, he will be back.
Application is for water connection in his layout pic.twitter.com/zK2coTs4Ci
— Whitefield Rising (@WFRising) June 12, 2019
As many as 1,900 villages in about 30 districts in Karnataka are facing drought-like conditions. About 2,600 water tankers have been dispatched to ease the crisis. The Karnataka state government has declared 3,122 regions to be severely affected by drinking water scarcity.
Water Crisis in Karnataka
North Karnataka region including the Hyderabad-Karnataka region is grappling with the critical situation of the water crisis. This region is pinning hopes on the Maharashtra water. It is expected that if rains arrive early in Maharashtra, water will be released to the region.
Residents of Athani village in Belagavi district will now be launching a protest against the Maharashtra government. They are demanding the release of water from the Krishna river.
The gravity of the situation can very well be understood from a few startling examples. A sterilisation camp at Kalaburagi government hospital was recently cancelled. The reason? The medical team realised that the facility did not have enough water for over 30 surgeries.
In fact, water scarcity has pushed Primary Health Centres (PHCs) in districts like Bidar, Kalaburagi and Ballari to resort to ways to minimise water usage. Doctors of the region say that the dependence on private tankers has only increased. The fact that temperatures are soaring to 41 degree Celsius is making the situation worse in the area.
Otherwise, rain-rich coastal Karnataka is also witnessing severe water scarcity. It received below normal rainfall post-monsoon (180.4mm against expected 263mm) and during January-May(36.6mm against expected 50.3mm). Resultant of this, the groundwater table has also depleted to a record low-level.
As per local reports, the schools are forced to function only for the first half as there is no drinking water in Udupi district. Additionally, mid-day meals have been stopped in over 100 schools in the Karkala taluk. The Baje dam across the Swarna river, which is the main source of water for the district, has 'reached dead-storage limit'.
Reopening of schools in Dakshina Kannada and Udupi district was postponed from late-May to early-June due to water scarcity.
Groundwater Level & Drying Reservoirs
According to the data from the Department of Rural Development and Panchayat Raj, 138 of the 176 taluks in the state have very low groundwater levels. The worst affected are Bagepalli, Chikkaballapura, Sidlaghatta, Bangarpet and Kolar. The groundwater level is below 60 meters in Kolar and Chikkaballapur district.
The state has 13 major reservoirs, including Supa, Narayanapura, Bhadra, Tungabhadra, among others. As per Karnataka State Natural Disaster Monitoring Centre, the water level at all the reservoirs has hit a record low. There is only 155 TMC of water in total in these reservoirs.
It is often said that the third world war would be fought over water. While earlier it was said to bring water scarcity to people's attention, this adage no longer seems an exaggeration. This article is a part of series The Logical Indian is focussing on to bring to you reports of water scarcity which is only getting worse.
Also Read: Bengaluru: Only 12 Out Of 60 Floating Islands Remain In Puttenahalli Lake
Help Us Correct
To err is human, to help correct is humane
Identified a factual or typographical error in this story? Kindly use this form to alert our editors
Story *
Error Type *
Spelling Grammar Incomplete Information Incorrect Information
Correction *
Error in submitting form. Try again later
WriterEditor
Latest On The Logical Indian
All Rights Reserved. Copyright @2020.
Stories that deserve attention, delivered to your inbox!
Handpicked, newsworthy stories which deserve the attention of a rational generation.
We have sent you a confirmation email.


text:
Cissy Ballen, Ph. D.
I am an assistant professor of biology education and discipline-based education researcher. My interests in this field largely center on identifying scalable strategies in higher education that improve learning for all, and reducing attrition of historically excluded groups in STEM fields. Prior to starting at Auburn, I completed postdoctoral research positions in the Zamudio Lab at Cornell University and in the (real) Cotner Lab at University of Minnesota, studying the effects of high stakes assessment, support programs, teaching methods, and classroom culture on student performance and persistence in undergraduate biology. I completed my doctoral degree in evolutionary biology in the Shine Lab and Olsson Lab at the University of Sydney, Australia. Email: mjb0100@auburn.edu
cissyballen
Post-doctoral Fellows
Sharday Ewell, M.Ed., Ph. D.
Hello! I am a postdoctoral associate working with Dr. Cissy Ballen in the Department of Biological Sciences at Auburn University. I currently conduct discipline-based education research on biology education and STEM equity. While my interests are broad, I am especially interested in self-regulated learning and identifying strategies that improve the development of these skills for all biology students. Prior to joining the Ballen lab, I was a Teach for America corps member and middle school science teacher in North Carolina, Virginia, and Washington, D.C. I completed my doctoral degree in neurobiology in the Theibert Lab at the University of Alabama at Birmingham. Email: sne0012@auburn.edu
sweetesttaboo85
Robin Costello, Ph. D.
I am a postdoctoral researcher interested in identifying classroom interventions that promote equitable and inclusive learning in undergraduate biology education. Specifically, my postdoctoral work evaluates the impact of both discussing how biases shape scientific processes and incorporating diverse scientist role models into introductory biology courses on student attitudes towards biology. Before joining the Ballen lab, I completed my doctoral degree in evolutionary biology in the Brodie lab at the University of Virginia. Email: rac0082@auburn.edu
Chloe Josefson, Ph. D.
I am interested in understanding the impact of the COVID pandemic on the undergraduate student experience as well as the impact of perceived self-efficacy among marginalized undergraduates. I am also interested in the physiological costs of reproduction in lactating female mammals. I am currently a NSF-PRFB fellow located in the Skibiel lab at the University of Idaho where I am studying mechanisms underlying variation in maternal investment in lactation and the consequences on milk composition and offspring growth and immune development. Email: ccj0011@auburn.edu
Paula Adams, Ph.D.
I am a postdoctoral scholar in the Ballen lab transitioning to discipline-based education research from a background in evolutionary biology. I have a broad interest in researching evidence-based approaches that promote equity and inclusion to improve outcomes in introductory biology courses. Prior to joining the Ballen lab in fall 2022, I completed my doctoral degree in evolutionary genomics and bioinformatics with Janna Fierst at The University of Alabama in 2022 (now at FIU).
adams_paula
Ryan Dunk, Ph.D.
Hey! I am a postdoctoral researcher interested in the intersection of STEM and society. This leads to two major threads of research that I have worked in. First is the identification of strategies to lead to more equitable STEM education, with a specific focus on more just educational outcomes for students from underrepresented identities. The second is work on student acceptance and understanding of scientific topics considered socially controversial, namely climate change and evolution. Prior to joining the Ballen Lab, I conducted biology education research both as a postdoc with Emily Holt at the University of Northern Colorado and as a PhD student with Jason Wiles at Syracuse University. Email: rzd0065@auburn.edu
dunkryan
Emily Driessen, M.S.
My name is Emily Driessen. It's nice to make your acquaintance. I am currently a PhD student at Auburn University in the Ballen lab with a passion for equity and diversity in undergraduate biology education. I believe everyone, and I mean EVERYONE, should have the opportunity to achieve and succeed in the subject of biology, and my research focuses on how to best support this achievement and success, recognizing structural barriers and historical racism. My past educational experiences include earning a B.S. in microbiology with a minor in chemistry from North Dakota State University while contributing to research in the McClean Lab as well as earning a M.S. in Science, Technology, Engineering, and Mathematics from the University of Kentucky while researching in the Wilhelm lab. Email: epd0016@auburn.edu
driessen_paige
Peyton Brewer
EDU-STEM Scholar, Fall 2021
Undergraduate Researcher, 2020-
Alayna Harvey
Kate Kiani
Bree Porter
EDU-STEM Scholar, Summer 2022
Rachel Youngblood
Auburn University Undergraduate Research Fellow, 2022-2023
EDU STEM Scholar, Spring 2020
Keirstin Cramer
Graduate Research Assistant, 2023-
Previous Lab Members
Sara Berk
Luoying (Kelsey) Chen
Undergraduate researcher, 2018-2021
Brandon Dye
Enya Granados
Graduate Research Assistant, College of Education, 2021-2022
Will Grogan
Taylor Gusler
Quinn Johnson
Todd Lamb
I am a M.S. student who conducts biology education research in Dr. Cissy Ballen's lab at Auburn University! My work focuses on instructor assessment practices and how they relate to equity and inclusion. I am interested in bettering myself as a future biology educator and working to understand biology education research along the way. Before joining the Ballen lab, I completed my B.S. degree in organismal biology here at Auburn university.
Taylor McKibben
Sara Odom
M.S. Student, 2018-2020
Abby Beatty, Ph.D.
AbbyBeatty4
Amelia Radocha
NSF REU student, Summer 2022
Sara Beth Ramsey
Keyaira Singleton
Co-advised with Sheritta Fagbodun, Tuskegee University
Alexis Stokes
Isabel Wagner
Sara Wood
Ash Zemenick
NSF Postdoc, 2020-2021


The 2008 Thomas Pink 'look book' takes the brand back to its roots, focusing firmly on the retailer's expertise in shirts.
When IT companies Open Business Systems and Psychosis merged recently, they became Fabric.
totalcontent has spruced up the pack copy for Neal's Yard Remedies' Christmas gift sets.
Furniture consultant David Brook works directly with architects and their clients to make sure the seating lives up to the setting.
We imagine it's a bit like speed dating. But certainly, this was one of the most curious – and fascinating – jobs we've ever done.
Throughout December, shoppers in the West End of London are being guided along their way by a new and innovative pedestrian wayfinding system created by those clever chaps at AIG.
After what seems like months (it was, actually) Bedell Group's 2006 annual review has finally arrived hot off the presses.